我有一个简单的GroupViewSet,它允许通过id和parent过滤Group对象。一切都按预期工作。
我想通过允许多父过滤器来扩展功能。类似于/API/groups/?parent=1&parent=2。
问题是返回的列表只被最后提供的父值过滤。所以在我的例子中,返回的查询集将被parent=2过滤。我如何在保留其他功能的同时覆盖值列表的过滤器?
class GroupViewSet(ModelViewSet):
queryset = models.Group.objects.all()
serializer_class = serializers.GroupSerializer
filter_backends = (DjangoFilterBackend)
filterset_fields = ('id', 'parent')
def get_queryset(self):
parent_ids = self.request.query_params.getlist('parent')
if len(parent_ids) > 1:
return self.queryset.filter(parent__in=parent_ids)
return self.queryset
1条答案
按热度按时间8dtrkrch1#
我认为最简单的方法是声明FilterSet而不是使用快捷键。
由于FilterSet在后台使用Form,因此应该正确处理参数列表