[英]How to save custom added field in an extended user creation form in django
我對Django很陌生,我通過擴展Django中的UserCreationForms制作了自定義注冊表單。
class SignUpForm(UserCreationForm): #This class will be used in views of account to make sigupform
user_type = forms.CharField(required=True,widget=forms.Select(choices=usertypes))
email = forms.CharField(max_length=254, required=True, widget=forms.EmailInput())
class Meta:
model = User
fields = ['username', 'user_type','email','password1','password2']
def save(self,commit=True):
user = super(SignUpForm, self).save(commit=False)
user.user_type = self.cleaned_data['user_type']
print('Flag3')
if commit:
user.save()
return user
與視圖工作正常:
def signup(request):
if request.method == 'POST':
form = SignUpForm(request.POST)
print('Flag0')
if form.is_valid():
user = form.save()
if user.user_type == 'Seller' or user.user_type=='seller':
print('Flag1')
auth_login(request, user)
print('Flag2')
print(user.user_type)
group = Group.objects.get(name='Seller')
print(group.name)
print('Flag3')
user.groups.add(group)
return redirect('get_seller')
if user.user_type == 'Customer' or user.user_type=='customer':
print('Flag1')
auth_login(request, user)
print('Flag2')
print(user.user_type)
group = Group.objects.get(name='Customer')
print(group.name)
print('Flag3')
user.groups.add(group)
return redirect('home')
else:
form = SignUpForm()
return render(request, 'signup.html', {'form': form})
我添加了標志,因為正在檢查表單的進度。
我面臨的問題是我想保存使user_type
成為自定義字段 。
我不知道如何保存自定義字段,或者是否正在保存自定義字段,如何獲取值。
更新:我打印了user.user_type
。 通過:
def save(self,commit=True): user = super(SignUpForm, self).save(commit=False) user.user_type = self.cleaned_data['user_type'] print(user.user_type)
Django的用戶模型沒有user_type
字段。 如果您希望user_type
字段成為Django用戶模型的一部分。 然后使用AbstractUser
模型並創建一個自定義用戶模型。
from django.contrib.auth.models import AbstractUser
class CustomUser(AbstractUser):
user_type = models.CharField(max_lenght=20, choices=usertypes)
現在,在創建表單時使用此自定義模型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.