使用django-filter和django-guardian

时间:2013-10-25 12:29:16

标签: django django-filter django-guardian

我无法让django-filterdjango-guardian一起工作。我需要的是ItemsFilterView,它允许用户列出并过滤她有权查看的所有项目。以下是我认为最相关的代码部分。我可以根据要求添加更多内容。

# filters.py
class ItemFilterSet(FilterSet):
    class Meta:
        model = Item

# views.py
class ItemFilterView(FilterView):
    filterset_class = ItemFilterSet

# urls.py
url(r'^items/$', ItemFilterView.as_view(), name='item_list'),

我认为应该使用get_objects_for_user(request.user, 'view_item')将查询集缩小到仅django-filter获取它们之前允许的项目,但我找不到添加它的正确位置。

1 个答案:

答案 0 :(得分:1)

我找到了添加逻辑的正确位置:

# views.py
class ItemFilterView(FilterView):
    filterset_class = ItemFilterSet

    def get_queryset(self):
        qs = Item.objects.all()
        qs = get_objects_for_user(self.request.user, 'view_item', qs)
        return qs