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
,这是访问urllocalhost: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
查找也匹配空的关系集。