【问题标题】:Extending User class with uniqueness and Non-Null扩展具有唯一性和非 Null 的用户类
【发布时间】:2015-11-14 04:19:24
【问题描述】:

我通过AbstractUser由User类扩展为:

class CustomUser(AbstractUser):
    middle_name = models.CharField(max_length=50, null=True)
    date_of_birth = models.DateField(null=True)
    Primary_address = models.CharField(max_length=50, null=True)
    Primary_address_zipcode = models.CharField(max_length=5, null=True)

电子邮件和密码是创建新用户的唯一要求。

1) 您如何使电子邮件成为一个独特的字段?我想通过将其添加到 CustomUser 来避免添加新列(或者这是正确的做法吗?):

email = models.EmailField(unique=True)

2) 由于不再使用用户名,如何允许用户名字段为 NULL 值?将其保留为 NULL 还是将电子邮件地址也放在用户名字段中会更好吗?

谢谢。

【问题讨论】:

    标签: django


    【解决方案1】:

    最好在用户名中添加null

    username = models.Charfield(default= None, null=True)
    

    并且您限制唯一电子邮件的代码是正确的

    email = models.EmailField(unique=True)
    

    【讨论】:

    • 如果我设置用户名 NULL = True,我会收到以下错误:django.core.exceptions.FieldError: 类 'CustomUser' 中的本地字段 'username' 与基类中类似名称的字段冲突' AbstractUser'
    • 你应该从 AbstractBaseUser 而不是 AbstractUser 扩展
    • AbstractBaseUser 创建一个新的用户类,不是吗?我只想从现有的 User 类继承。
    • 对不起,我问错了。你想达到什么目标,能详细点吗?
    • 我想在现有的 User 类中添加额外的字段,就像上面一样。一个变化是用户只需要一个电子邮件和密码来创建一个新用户。我相信默认的 User 类需要用户名和密码。我想让 user.email 唯一并允许用户名为 NULL 值。
    猜你喜欢
    • 2021-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-13
    • 1970-01-01
    • 2023-03-22
    • 2020-05-03
    相关资源
    最近更新 更多