Using django-filter together with 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动手,但我找不到正确的位置来添加它。

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

# 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

相关内容

  • 没有找到相关文章

最新更新