我在Django中启用了用户身份验证模块,但是当我使用UserCreationForm
时,他只询问用户名和两个密码/密码确认字段。我还需要电子邮件和全名字段,并设置为必选字段。
我做到了:
from django.contrib.auth.forms import UserCreationForm
from django import forms
from django.contrib.auth.models import User
class RegisterForm(UserCreationForm):
email = forms.EmailField(label = "Email")
fullname = forms.CharField(label = "Full name")
class Meta:
model = User
fields = ("username", "fullname", "email", )
现在,表单显示了新字段,但没有将它们保存到数据库中。
我该怎么解决?
我刚刚在StackOverflow上注册了一个帐户,因此没有必要直接回复chands的答案。但是,请注意以下代码行:
如果全名类似于“Foo Bar Baz”,则会引发“ValueError:too many values to unpack”(例如,如果用户有中间名,则会出现两个空格实例)。我使用了一个微小的变化,将初始空白后的所有内容填充到姓氏中。
用户模型中没有名为
fullname
的字段。如果希望使用原始模型存储名称,则必须将其分别存储为名和姓。
编辑:如果只需要表单中的一个字段,并且仍然使用原始用户模型,请使用以下内容:
你可以这样做:
现在您必须按照manji所说的做,并重写save方法,但是由于用户模型没有全名字段,因此它应该如下所示:
注意:您应该为“全名”字段添加一个干净的方法,该方法将确保输入的全名只包含两部分,即名字和姓氏,并且该全名包含其他有效字符。
用户模型的参考源代码:
必须重写
UserCreationForm.save()
方法:相关问题 更多 >
编程相关推荐