电子邮件上带有 unique_together 的 Django 自定义用户模型

Mun*_*nro 4 python django

我正在尝试在我的 Django 应用程序中创建一个自定义用户模型,问题是我收到一个错误,说电子邮件必须是唯一的(足够公平!),但是,我需要email并且company一起是唯一的,因为我可能有相同的电子邮件但注册到另一家公司。

我收到以下错误:

ERRORS:
site.SiteUser: (auth.E003) 'SiteUser.email' must be unique because it is named as the 'USERNAME_FIELD'.
Run Code Online (Sandbox Code Playgroud)

这是我的模型:

class SiteUser(models.Model):
    company = models.ForeignKey(Company)
    email = models.EmailField(max_length=254)

    is_staff = models.BooleanField(default=False)
    is_active = models.BooleanField(default=True)
    date_joined = models.DateTimeField(auto_now=False, auto_now_add=True)

    objects = SiteUserManager()

    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = []

    class Meta:
        unique_together = ('company', 'email',)
Run Code Online (Sandbox Code Playgroud)

小智 8

unique=True的电子邮件字段定义中缺少。如USERNAME_FIELD 上USERNAME_FIELDdjango 文档中所述,在 中使用的字段应该具有此参数。

应该是这样的:

email = models.EmailField(max_length=254, unique=True)
Run Code Online (Sandbox Code Playgroud)


cat*_*ran 6

添加auth.E003SILENCED_SYSTEM_CHECKS设置中。这将允许manage.py运行。而且我认为您也应该W004在此列表中添加警告:

SILENCED_SYSTEM_CHECKS = ['auth.E003', 'auth.W004']
Run Code Online (Sandbox Code Playgroud)