Python 基于django guardian权限覆盖get_queryset

Python 基于django guardian权限覆盖get_queryset,python,django,django-guardian,Python,Django,Django Guardian,我正试图根据用户从django guardian获得的对象权限覆盖get_queryset,以便只有用户拥有权限的对象才可见 def get_queryset(self, request): if request.user.is_superuser: qs = super(MyAdminInline, self).get_queryset(request) return qs for item in MyModel.objects.all()

我正试图根据用户从django guardian获得的对象权限覆盖
get_queryset
,以便只有用户拥有权限的对象才可见

def get_queryset(self, request):
    if request.user.is_superuser:
        qs = super(MyAdminInline, self).get_queryset(request)
        return qs  

    for item in MyModel.objects.all():
        for perm in get_perms(request.user, item):
            things_user_can_see = get_objects_for_user(request.user, perm)
            return things_user_can_see

遗憾的是,这实际上没有任何作用,所有的项目,不管用户拥有什么权限,都是可见的。

首先,您需要了解视图需要什么权限。 然后,根据这些权限获取对象

若你们不知道对象的权限,那个么你们可以通过和模型相关的所有权限来过滤你们的对象

对于获取,请执行以下操作:

from guardian.shortcuts import get_objects_for_user, get_perms_for_model

class MyAdminInline():
    def get_queryset(self, request):
        if request.user.is_superuser:
            qs = super(MyAdminInline, self).get_queryset(request)
            return qs  

        all_model_perms = get_perms_for_model(MyModel)
        return get_objects_for_user(request.user, all_model_perms)
就这些!没有在每个对象上循环,检查权限并返回错误的方式