在Django用户模型中独一无二

时间:2018-03-21 11:07:59

标签: django django-authentication

我想更新Django User表,并在其中添加另一个字段。这就是我的方式。

class User(AbstractUser):
    platform = models.CharField(max_length=10)
    USERNAME_FIELD = 'email'

现在,因为有一个字段USERNAME_FIELD,它占据一个独特的字段。但是,我希望username and platform应该是unique_together,而不仅仅是username

我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:0)

AbstractUser是一个大多数完整的模型,它定义了一组默认字段,包括用户名唯一性。如果这对您不起作用,那么您应该继承AbstractBaseUser并定义完整的字段集。

答案 1 :(得分:0)

仅当您使用内置身份验证后端时,用户名字段上的唯一性。

直接从Django文档

  

如果您使用默认的身份验证后端,则您的模型必须具有单个唯一字段...如果您使用可以支持该功能的自定义身份验证后端,则允许使用非唯一的用户名字段。

Django Custom Authentication

希望这会有所帮助

答案 2 :(得分:0)

从您的问题和评论来看,您很清楚(如果我没有完全误解)您希望使用带有多个 emailplatform(标识符)保存用户。在这种情况下,如果您的数据库是 Postgresql,您可以在 postgres ArrayField 列上使用 platform,或者您可以使用 django 提供的 JsonField

  1. Postgresql Array Field 在 Django > 1.7 中可用

  2. Django Json Field