我开发了一个 django 应用程序,它根据资源级别权限注册用户并提供资源在此我在我的模型和模板上使用 django 基本级别权限,为了查看权限,我在我的模型中设置了权限元组,例如:
class Model(AbstractUser):
group = models.ForeignKey(AppGroup)
class Meta:
permissions = ( ('view_app', 'user can view app'), )
我在创建上面的模型后迁移我的模型。
现在对于权限,我从管理员创建了一个组,并包括所有应用程序查看/更改/删除权限,使用该组我在表单类中生成了一个下拉列表。现在用户(管理员)可以根据选定的权限创建其他用户,成功注册后,新用户能够成功登录并访问所有资源,但是当我尝试访问用户权限时,这是一个使用 like 的多对多关系
class UserListView(ListView):
def get_queryset(self):
print(self.request.user.user_permissions.all())
return super(UserListView, self).get_queryset()
当我列出我的视图时,它给了我一个关系错误(500 错误): 关系 views_list_user_permission 不存在
现在,当我通过超级用户访问同一个视图时,它会授予我所有权限,但是对于既不是超级用户也不是员工的用户,它会吐出上述错误。通过查看djancgo.contrib.auth.models
PermissionMixin 类代码,在我看来 user_permissions m2m 字段只能由超级用户访问,但我对此表示怀疑。所以这就是我正在做的事情并遇到了问题,如果我采取错误的方式,请纠正我