我无法让django-filter
和django-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
获取它们之前允许的项目,但我找不到添加它的正确位置。
答案 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