【问题标题】: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'