Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.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
如何在自定义用户模型中使用django guardian_Django_Python 3.x_Django Guardian - Fatal编程技术网

如何在自定义用户模型中使用django guardian

如何在自定义用户模型中使用django guardian,django,python-3.x,django-guardian,Django,Python 3.x,Django Guardian,我正在使用django guardian检查用户的对象权限。在我的特殊情况下,我扩展了用户模型。 在my models.py中,我扩展了如下用户模型: 在我的对象模型中,我为权限添加了一个元类: 在完成makemigrations和migrate之后,当我在python manage.py shell中运行below test时,它总是在我的用户模型中调用has_perm函数,并返回该函数的值,这是真的 >>>from myapp.models import User, t

我正在使用django guardian检查用户的对象权限。在我的特殊情况下,我扩展了用户模型。 在my models.py中,我扩展了如下用户模型:

在我的对象模型中,我为权限添加了一个元类:

在完成makemigrations和migrate之后,当我在python manage.py shell中运行below test时,它总是在我的用户模型中调用has_perm函数,并返回该函数的值,这是真的

>>>from myapp.models import User, task
>>>setuser = User.objects.get(email = 'joe@gmail.com')
>>>task = exclusionDomain.objects.get(name = 'task1')
>>>setuser.has_perm('view_task', task)

如何解决此问题?或者有没有关于如何在自定义用户模型中使用guardian的有用教程?

如果有人有同样的问题。以下是解决方案:

使用AbstractUser而不是AbstractBaseUser。AbstractBaseUser与django guardian不兼容。根据《卫报》的文档,使用AbstractUser的扩展用户模型应该可以。这对我也很管用

以下是如何使用AbstractUser扩展用户模型的教程:

class task(models.Model):
    name = models.CharField(max_length=100)

    class Meta:
        permissions = (
            ('view_task', 'View task'),
        )

    def __str__(self):
        return self.name
>>>from myapp.models import User, task
>>>setuser = User.objects.get(email = 'joe@gmail.com')
>>>task = exclusionDomain.objects.get(name = 'task1')
>>>setuser.has_perm('view_task', task)