【问题标题】:How to extend Django's user model如何扩展 Django 用户模型
【发布时间】:2020-11-11 10:32:06
【问题描述】:

我知道有一种方法可以在 Django 中扩展用户模型及其身份验证应用程序。有没有办法使用电子邮件作为用户名,同时创建一个用户 ID 作为主键?

【问题讨论】:

标签: python python-3.x django django-models


【解决方案1】:

就像 Crosby 已经说过的,你应该像这样写你的模型,加上一些额外的东西:

class User(AbstractUser):
    user_id = models.IntegerField(primary_key=True, ...)
    email = models.EmailField(unique=True)

    USERNAME_FIELD = 'email'

覆盖电子邮件字段并将其设置为唯一字段可以减轻您在视图或其他地方编码的压力,以防止重复电子邮件。

【讨论】:

  • 这会扩展现有的用户模型吗?
  • 谢谢,这真的很有帮助!
【解决方案2】:

是的,将USERNAME_FIELD 设置为电子邮件。

默认情况下,您已经可以使用pk(或id)字段作为用户ID。如果您需要特定的内容,请使用 primary_key=True 创建一个字段。

class User(AbstractUser):
    your_own_identifier = models.IntegerField(primary_key=True, ...)


    USERNAME_FIELD = 'email'

【讨论】:

  • 我已经试过了,效果和你说的一样,谢谢!
猜你喜欢
  • 2016-10-12
  • 2011-02-28
  • 2013-12-06
  • 2018-01-21
  • 2013-12-23
  • 2018-04-24
  • 2017-03-02
相关资源
最近更新 更多