Django:向 UserCreationForm 添加附加字段

Posted

技术标签:

【中文标题】Django:向 UserCreationForm 添加附加字段【英文标题】:Django: Add additional fields to UserCreationForm 【发布时间】:2020-11-26 08:31:40 【问题描述】:

我们可以在 django 中向 UserCreationForm 添加其他字段吗?

UserCreationForm默认有5个字段:

    用户名 电子邮件 名字 姓氏 密码

如果我想添加其他字段,例如年龄、性别,那么如何在 UserCreationForm 中添加这些字段。

我是 django 新手,任何参考或描述性代码都会很明显。

【问题讨论】:

#这个链接To ***会回答你的问题 这个链接***.com/questions/48049498/…会回答你的问题 【参考方案1】:

按照Link 执行此操作

class SignUpForm(UserCreationForm):
    # My Own Custom Fields
    username = forms.CharField(forms.TextInput(attrs='class': 'form-control', 'placeholder': 'Username'))
    first_name = forms.CharField(forms.TextInput(attrs='class': 'form-control', 'placeholder': 'First Name'), max_length=32, help_text='First name')
    last_name=forms.CharField(forms.TextInput(attrs='class': 'form-control', 'placeholder': 'Last Name'), max_length=32, help_text='Last name')
    email=forms.EmailField(forms.EmailInput(attrs='class': 'form-control', 'placeholder': 'Email'), max_length=64, help_text='Enter a valid email address')
    password1=forms.CharField(forms.PasswordInput(attrs='class': 'form-control', 'placeholder': 'Password'))
    password2=forms.CharField(forms.PasswordInput(attrs='class': 'form-control', 'placeholder': 'Password Again'))

    # The Default Fields Of The UserCreation Form
    class Meta(UserCreationForm.Meta):
        model = User
        # I've tried both of these 'fields' declaration, result is the same
        # fields = ('username', 'first_name', 'last_name', 'email', 'password1', 'password2', )
        fields = UserCreationForm.Meta.fields + ('first_name', 'last_name', 'email',)

【讨论】:

感谢您的回复,但您提到的字段已经存在于 UserCreationForm 中,我在问一些额外的字段 @ShinChan 我写了“我自己的自定义字段”的评论,您可以随时根据需要更改字段。 是的,我同意@AryanMishra。您可以相应地更改字段。【参考方案2】:

如果您希望存储与用户相关的信息,您可以将 OneToOneField 用于包含字段的模型以获取更多信息。

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    additional_field1 = models.SomeField()
    .....

阅读文档here 了解扩展用户模型的详细信息。

【讨论】:

我应该在哪里写上面的代码,在models.py或forms.py中 在 models.py @ShinChan

以上是关于Django:向 UserCreationForm 添加附加字段的主要内容,如果未能解决你的问题,请参考以下文章

Django 创建自定义 UserCreationForm

Django:如何在用户使用默认的 UserCreationForm 注册后立即登录?

修改 Django UserCreationForm

[Django UserCreationForm在电子邮件已经存在时引发验证错误

Django 1.5:UserCreationForm 和自定义身份验证模型

Django - 使用 css 样式化 UserCreationForm