DjangoFilterBackend field = null

时间:2018-01-18 11:14:11

标签: django-rest-framework django-filters

我在所有领域都使用了DjangoFilterBackend:

class EntitiesViewSet(viewsets.ModelViewSet):
    queryset = Entity.objects.all()
    serializer_class = EntitiesSerializer
    pagination_class = StandardResultsSetPagination
    filter_backends = (DjangoFilterBackend,)
    filter_fields = '__all__'

它非常适合查询具有固定值或布尔值的一个或多个字段的url。

像这样:

http://localhost:8000/api/persons/?news_by_email=True
http://localhost:8000/api/persons/?issuer=SSP-SC

但我还需要过滤掉具有空值的字段,但它无效。

我试过了:

/persons/?parent=null
/persons/?parent=Null
/persons/?parent=NULL
/persons/?parent=
/persons/?parent__isnull

同样简化过程中的任何建议?

任何需要扩展程序或新视图集的建议?

2 个答案:

答案 0 :(得分:1)

除了isull之外,您可能还想查询“精确”值。在这种情况下,

filter_fields = {'parent': ['exact', 'isnull']}

您可以使用'= True'进行查询,

/persons/?parent__isnull=True

答案 1 :(得分:0)

filter_fields = {'parent': ['isnull']}

这将添加一个带有'isnull'的过滤器,您可以进行如下查询:

/persons/?parent__isnull=true