首页 > 解决方案 > ValueError:无法查询“”:必须是“组”实例

问题描述

我创建自定义用户和组模型继承Abstract user modelauth Group model

但是我创建了工作人员并授予了相同的错误触发器一些权限。然后检查用户权限相同的错误触发器。

放一些代码或错误。如何找出这个错误?`

(Pdb) user=request.user
(Pdb) user
<SimpleLazyObject: <User: Gaurav@gmail.com>>
(Pdb) user.groups.first()
<UserGroup: Test>
(Pdb) g1=user.groups.first()
(Pdb) g1.permissions.all()
<QuerySet [<Permission: auth | group | Can add group>, <Permission: auth | group | Can change group>, <Permission: auth | group | Can delete group>, <Permission: auth | group | Can view group>, <Permission: camera | CameraGroup | Can add CameraGroup>, <Permission: camera | CameraGroup | Can change CameraGroup>, <Permission: camera | CameraGroup | Can delete CameraGroup>, <Permission: camera | CameraGroup | Can view CameraGroup>]>
(Pdb) user.has_perm('view_cameragroup')
*** ValueError: Cannot query "Gaurav@gmail.com": Must be "Group" instance.`

标签: djangopython-3.xdjango-modelsdjango-formsdjango-permissions

解决方案


您在has_perm()方法中的参数似乎不正确。用于检查权限的参数,由应用标签、权限代码和型号名称组成。例如,您的应用名称是blog并且您的模型名称是Post。如果您希望用户具有查看权限,则可以通过user.has_perm('blog.view_post').

您可以从 django 文档中获得进一步的指导:https ://docs.djangoproject.com/en/3.0/topics/auth/default/#default-permissions

我希望这能帮到您 :)


推荐阅读