Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何过滤列表属性';s的长度是“0”?_Python_Django_Django Rest Framework - Fatal编程技术网

Python 如何过滤列表属性';s的长度是“0”?

Python 如何过滤列表属性';s的长度是“0”?,python,django,django-rest-framework,Python,Django,Django Rest Framework,我有一个ListAPIView,这是访问urllocalhost:8000/api/physicalserver\u任务/列表的结果: { "count": 1, "next": null, "previous": null, "results": [ { "id": 16, "physicalservers": [], ... 代码如下: class PhysicalSer

我有一个
ListAPIView
,这是访问url
localhost:8000/api/physicalserver\u任务/列表的结果:

{
    "count": 1,
    "next": null,
    "previous": null,
    "results": [
        {
            "id": 16,
            "physicalservers": [],
            ...
代码如下:

class PhysicalServerTaskListForHomeWorkPanelAPIView(ListAPIView):
    serializer_class = PhysicalServerTaskListForHomeWorkPanelSerializer
    permission_classes = [IsAdminUser]
    pagination_class = CommonPagination

    def get_queryset(self):
        filters = {'{}__contains'.format(key): value
               for key, value in query_params.items()}
        return PhysicalServerTask.objects.filter(**filters)
class PhysicalServerTaskListForHomeWorkPanelSerializer(ModelSerializer):

    physicalservers = PhysicalServerTaskSerializer(many=True, read_only=True)

    physicalserver_count = serializers.IntegerField(write_only=True, allow_null=True)

    class Meta:
        model = PhysicalServerTask
        fields = "__all__"
        depth = 1
我有一个要求,那就是过滤
physicalservers
的长度是
0

你知道,如果我们只是过滤
id
,我们可以使用

localhost:8000/api/physicalserver_task/list/?id=16
但是如果我想过滤
physicalservers
的计数为
0
,该怎么办


编辑-1

我的Serializer代码如下:

class PhysicalServerTaskListForHomeWorkPanelAPIView(ListAPIView):
    serializer_class = PhysicalServerTaskListForHomeWorkPanelSerializer
    permission_classes = [IsAdminUser]
    pagination_class = CommonPagination

    def get_queryset(self):
        filters = {'{}__contains'.format(key): value
               for key, value in query_params.items()}
        return PhysicalServerTask.objects.filter(**filters)
class PhysicalServerTaskListForHomeWorkPanelSerializer(ModelSerializer):

    physicalservers = PhysicalServerTaskSerializer(many=True, read_only=True)

    physicalserver_count = serializers.IntegerField(write_only=True, allow_null=True)

    class Meta:
        model = PhysicalServerTask
        fields = "__all__"
        depth = 1

您可以使用
PhilicalServers\uuu isnull
查找:

def get_queryset(self):
    filters = {'{}__contains'.format(key): value
           for key, value in query_params.items()}
    if query_params.get('serverscount') == 0:
        filters.update({'phisicalservers__isnull': True})
    return PhysicalServerTask.objects.filter(**filters)

在Python中,None是否为null?@qg_java_17137在Python中,None类似于null。但是在这个查询中,
\u isnull
查找也匹配空的关系集。