Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在Django中为管理员用户和普通用户创建单独的模型(表)_Python_Django_Django Models_Django Rest Framework_Django Admin - Fatal编程技术网

Python 如何在Django中为管理员用户和普通用户创建单独的模型(表)

Python 如何在Django中为管理员用户和普通用户创建单独的模型(表),python,django,django-models,django-rest-framework,django-admin,Python,Django,Django Models,Django Rest Framework,Django Admin,我只想为普通用户和管理员用户创建单独的表格我同意Willem的意见,但您可以尝试几种不同的模式: class BaseUser(AbstractBaseUser...): ''' base user class ''' first_name = models.CharField(...) last_name = models.CharField(...) @property def is_normal_user(self): try:

我只想为普通用户管理员用户

创建单独的表格我同意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:
user=BaseUser.objects.get(id=)
如果user.is_正常用户:
#为普通用户做一些事情:
如果user.is_admin_user:
#为管理员用户执行以下操作:

为什么需要这样做?忽略一些不必要的字段会使身份验证系统等变得更加复杂。这是我的项目的一个要求。有工作吗?