首页 > 解决方案 > 有没有办法将 django 管理员(超级用户)与普通用户分开?

问题描述

在我的 Django Rest Framework api 中,我没有与我的 api 交互的人类用户,但我想对这些机器用户使用用户身份验证。但是,AbstractBaseUser 仍然使用所需的电子邮件和用户名(这对我的机器用户没有意义)将我锁定在很多地方。另外,我希望有人工管理员(超级用户),但是通过使用 AbstractBaseUser 进行自定义,超级用户也会发生变化。我可以将用于身份验证的用户与我想在管理员中使用的超级用户分开吗?

我已经尝试在我的机器用户模型中使用 OneToOne 链接与用户作为配置文件,但这仍然意味着我需要符合 django 的用户。另外,我尝试使用 AbstractBaseUser 但这会产生上述问题。

应该是我的用户模型的模型,因为这会创建另一个资源(收据)

class ReceiptMachine(models.Model):
    machine_user = models.OneToOneField('ReceiptUser',  on_delete=models.CASCADE)
    machine_id = models.UUIDField(verbose_name='id of receipt machine', default=uuid.uuid4, editable=False, unique=True)
    store = models.ForeignKey('Store', on_delete=models.CASCADE, to_field='store_id')

class ReceiptUser(AbstractBaseUser):
    ? 

所以我想通过 Django 用户使用这个模型作为我的身份验证,但我也想保留普通的管理员超级用户。

标签: djangoauthenticationdjango-rest-frameworkadmindjango-users

解决方案


推荐阅读