Django自定义用户,元组为usernam

2024-06-16 10:46:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Django有很好的了解,但找不到正确的解决方法:

我创建了一个将在多个移动项目中使用的API。所以我实现了一个应用程序模型,当我登录时会传递这个模型。你知道吗

我还创建了一个自定义用户模型:

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')

我用的是djangorestframeworkjwt。所以我有一个API调用,需要一封电子邮件、密码和一个应用程序(apikey作为字符串FYI)来获取令牌。你知道吗

一切正常,除了在这个配置中,我无法创建另一个用户使用相同的电子邮件,但不同的应用程序。因为我的EmailField是我的用户名字段。你知道吗

有什么办法可以避免我重写所有的东西吗?你知道吗

我想到的最好的事情是添加一个唯一的字段(例如CharField)(例如用户id+apikey)创建时将自动填充。但当我使用时/管理.pycreatesuperuser,django会要求我手动填充字段。没什么大不了的,但如果你有更好的/合适的方法,我会很高兴的!你知道吗


Tags: 方法用户模型apitrue应用程序autoapplication
1条回答
网友
1楼 · 发布于 2024-06-16 10:46:36

manytomany代替foreignkey怎么样:

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)
    applications = models.ManyToManyField(Application, null=True)

    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = []

    objects = UserManager()

    class Meta:
        unique_together = (('email', 'application'),)

相关问题 更多 >