【问题标题】:How to create separate model(table) for Admin User and Normal User in Django如何在 Django 中为管理员用户和普通用户创建单独的模型(表)
【发布时间】:2021-03-05 10:16:26
【问题描述】:

我只想要普通用户管理员用户的单独表格。

【问题讨论】:

  • 为什么这是必要的?这将使身份验证系统等更加复杂。
  • 只是为了忽略一些不必要的字段。这是我的项目的要求。有什么解决办法吗?

标签: python django django-models django-rest-framework django-admin


【解决方案1】:

我同意 Willem 的评论,但您可以尝试几种不同的模式:

class BaseUser(AbstractBaseUser...):

    ''' base user class '''

    first_name = models.CharField(...)
    last_name = models.CharField(...)

    @property
    def is_normal_user(self):
        try:
            return self.normal_user and True
        except:
            return False

    @property
    def is_admin_user(self):
        try:
             return self.admin_user and True
        except:
             return False
    

class NormalUser(models.Model, ...):

    ''' normal user, extends BaseUser class '''

    base_user = models.OneToOneField('BaseUser', related_name='normal_user', ...)
    email = models.CharField(...)
        

class AdminUser(models.Model, ...):

    ''' admin user, extends BaseUser class '''

    base_user = models.OneToOneField('BaseUser', related_name='admin_user', ...)
    email = models.CharField(...)
    

然后你可以在你的视图中像这样:

user = BaseUser.objects.get(id=<the user id>)

if user.is_normal_user:
    
    # do something for normal users:

if user.is_admin_user:

    # do something for admin users:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-21
    • 2021-12-13
    • 1970-01-01
    • 2019-10-17
    • 2021-11-13
    • 2011-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多