Django用户模型电子邮件字段:如何使其成为强制性

Posted

技术标签:

【中文标题】Django用户模型电子邮件字段:如何使其成为强制性【英文标题】:Django User model email field: how to make it mandatory 【发布时间】:2011-07-26 11:19:57 【问题描述】:

我需要将 Django 用户模型中的电子邮件字段设为必填项。如何做到这一点对我来说并不明显。欢迎提出建议。我目前正在使用:

from django.contrib.auth.forms import UserCreationForm

用于我的用户创建表单,并将其与我自己的自定义 UserProfileCreateForm 结合起来

伊恩

【问题讨论】:

你应该接受他的回答。 【参考方案1】:

您应该能够对提供的注册表单进行子类化并覆盖Meta 类中字段的属性。

from django.contrib.auth.forms import UserCreationForm

# Not sure about the syntax on this one. Can't find the documentation.
class MyUserCreationForm(UserCreationForm):

    class Meta:
        email = 
            'required': True
        


# This will definitely work
class MyUserCreationForm(UserCreationForm):

    def __init__(self, *args, **kwargs):
        super(MyUserCreationForm, self).__init__(*args, **kwargs)

        self.fields['email'].required = True

【讨论】:

第一个解决方案对我不起作用。第二种解决方案效果很好。非常感谢。 可以直接在模型上做吗?【参考方案2】:
from django import forms
from django.contrib.auth.models import User


class MyUserForm(forms.ModelForm):

    email = forms.CharField(max_length=75, required=True)

    class Meta:

        model = User
        fields = ('username', 'email', 'password')

【讨论】:

可以直接在模型上做吗?【参考方案3】:

在你的模型中使用EmailField

查看更多信息 https://docs.djangoproject.com/en/2.1/ref/models/fields/#emailfield

【讨论】:

以上是关于Django用户模型电子邮件字段:如何使其成为强制性的主要内容,如果未能解决你的问题,请参考以下文章

在 Django 中,为啥模型中的 blank=True 不会使表单字段不是强制性的?

如何在 django rest 中自动继承外键模型的字段?

如何强制 Django 模型中的 2 个字段共享相同的默认值?

如何合并两个模型集合并使其成为一个分页然后将其发送到 Laravel 中的视图

在 Django 1.5 自定义用户模型中使用电子邮件作为用户名字段导致 FieldError

允许使用 django-profiles 更改用户字段(如电子邮件)