Django UserCreationForm 扩展

Django UserCreationForm extension

我可以向当前包含用户名、电子邮件、密码 1 和密码 2 的 UserCreationForm 的扩展添加地址、城市、州、国家/地区、密码和安全问题和答案等字段吗?如果是,请说明如何?

forms.py

class UserCreationForm(UserCreationForm):
    email = EmailField(label=_("Email address"), required=True,
        help_text=_("Required."))
    city= forms.CharField(label= _("City"),max_length=20, required=True)
    state= forms.CharField(label= _("State"),max_length=20, required=True)

    class Meta:
        model = User
        fields = ("username", "email", "password1", "password2","city","state")

    def save(self, commit=True):
        user = super(UserCreationForm, self).save(commit=False)
        user.email = self.cleaned_data["email"]
        user.city = self.cleaned_data["city"]
        user.state = self.cleaned_data["state"]

        if commit:
            user.save()
        return user

是的,就像您处理电子邮件一样:

class UserCreationForm:
    a_field = WhateverField(whatever='whatever'...)

    class Meta:
        model = User
        fields = ("username", "email", "password1", "password2")

该字段现已添加到您的表单中。

目前您正在扩展 UserCreationForm class 如果您在用户模型中有其他字段,那么您可以使用 forms.ModelForm 并仅提及其他字段。

例如

class UserForm(forms.ModelForm):
    class Meta:
        model = User
        fields = ['username','name', 'email', 'phone', 
              'address','city','state', 'first_time']

如果你想使用自定义表单。

class UserForm(forms.Form):
      name = forms.CharField(label= _("Name"))
      address = forms.CharField(label=_("Address"))
      etc.