Python 如何在django中保存扩展用户创建表单中自定义添加的字段
我是Django的新手,通过扩展Django中的UserCreationForms,我制作了一个定制的注册表单Python 如何在django中保存扩展用户创建表单中自定义添加的字段,python,django,forms,Python,Django,Forms,我是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
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})
我添加了标志,因为is正在检查表单的进度
我面临的问题是,我想保存使用户键入的自定义字段
我不知道如何保存自定义字段,或者如果正在保存,如何获取值
更新:我打印了用户。用户类型
。
作者:
def保存(self,commit=True):
user=super(SignUpForm,self).save(commit=False)
user.user\u type=self.cleaned\u数据['user\u type']
打印(user.user\u type)
Django的用户模型没有user\u type
字段。如果希望user\u type
字段成为Django用户模型的一部分。然后使用AbstractUser
model并创建一个自定义用户模型
from django.contrib.auth.models import AbstractUser
class CustomUser(AbstractUser):
user_type = models.CharField(max_lenght=20, choices=usertypes)
现在在创建表单时使用此自定义模型。您在
self.cleaned_数据['user_type']
?@HigorRossatousertypes=[('customer','customer'),('seller','seller'),]
如果你问的是这样的话。否则我一点线索也没有。在你的注册表单中
你覆盖了保存
方法。在该方法中,您正在调用self.cleaned\u data['user\u type']
。你能打印吗?@HigorRossato是的,可以打印。当客户被选为卖家类型时,它正在打印客户。我已经在问题的末尾添加了屏幕截图。好的,我会尝试一下。我刚刚回到这个。。。创建一个AbstractUser会导致许多开放端出现save不起作用,Django管理员无法处理请求。。etc(不建议初学者使用)。另一种方法是在另一个用户中使用外键,并将额外的数据存储在那里。一旦用户完成创建帐户,将其重定向到另一个表单。