为什么UserCreationForm在Django的模型类中定义了UserName字段明确?

时间:2014-03-20 20:30:25

标签: django django-forms django-users django-models

我在[{1}}

中查看source code UserCreationForm

我注意到的是以下内容:

django.contrib.auth.forms

为什么需要在class Meta: model = User fields = ("username",) 中明确提及此("用户名",)。因为fields再次定义了username字段。为什么?为什么UserCreationForm未包含在上述Password fields定义中?

Meta class

1 个答案:

答案 0 :(得分:2)

fields属性存在,因为没有它,该模型中的所有字段都将显示在表单上(ModelForm的默认行为是显示模型中的所有字段,在缺少"字段"或"排除"属性)。

password字段不在其中,因为表单上显示的密码字段实际上并非存储在模型中的密码字段 - 模型中的密码字段是散列密码,而表格上显示的是普通文本字段。因此,处理此表单的代码会获取这些文本密码,确保它们相同,然后创建" real"密码并存储在模型中。