【发布时间】:2018-06-06 11:38:35
【问题描述】:
我对 Django 有一定的了解,但找不到如何正确解决这个问题:
我创建了一个将在多个移动项目中使用的 API。于是我实现了一个登录时通过的Application模型。
我还创建了一个自定义用户模型:
class CustomUser(AbstractUser):
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
username = None
email = models.EmailField('email address', unique=True)
application = models.ForeignKey(Application, null=True)
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = []
objects = UserManager()
class Meta:
unique_together = ('email', 'application')
我正在使用 djangorestframework-jwt。所以我有一个 API 调用,它需要一个电子邮件、密码和一个应用程序(apikey 作为字符串仅供参考)来获取令牌。
一切正常,除了在此配置中,我无法使用相同的电子邮件创建另一个用户,但使用不同的应用程序。因为我的 EmailField 是我的 USERNAME_FIELD。
是否有任何解决方案可以避免我重写所有内容?
我想到的最好的事情是添加一个唯一的字段(例如 CharField)(例如 user.id + apikey 的组合),该字段将在创建时自动填充。但是当我使用 ./manage.py createsuperuser 时,django 会要求我手动填写该字段。没什么大不了的,但如果你有更好/正确的方法,我会很高兴!
【问题讨论】:
标签: python django authentication