如何过滤url中使用等于或大于条件的数据?

2024-10-01 17:34:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我可以使用下面的链接过滤id=16的数据:

http://localhost:8000/api/physicalservertask/list_for_home_workpanel/?id=16

这是我的列表api视图:

^{pr2}$

我有一个问题,如何通过url查询id>= 16的数据列表?在

我的意思是我能否通过:

http://localhost:8000/api/physicalservertask/list_for_home_workpanel/?id__gte=16

过滤数据。在

我知道我可以在ListAPIView查询中这样做:

id_gte = self.request.query_params.copy().get('id_gte')
...
qs = PhysicalServerTask.objects.filter(**filters)
qs.filter(Q(id__gte=id__gte))

但有没有更方便的方法来实现这一点呢?在


Tags: 数据apiidlocalhosthttphome列表for
1条回答
网友
1楼 · 发布于 2024-10-01 17:34:57

您可以将filter_fields属性添加到视图中,如下所示:

class PhysicalServerTaskListAPIView(ListAPIView):
    ...
    filter_fields = {
        'id': ['gte', 'lte']
    }

这将允许您进行以下查询:

^{pr2}$

要使其生效,您需要install django-filter,并将DjangoFilterBackend添加到您的settings.py中(如果它还没有):

REST_FRAMEWORK = {
    ...
    'DEFAULT_FILTER_BACKENDS': ('django_filters.rest_framework.DjangoFilterBackend',),
}

{cd1>字段的精确查找通常用于查找列表。但是,也可以提供字典,就像上面的例子一样,它将模型字段映射到其他类型的查找,例如gte和{}。在

关于filter_fields属性的更多信息可以在here找到。关于filter_fields的list/dict格式的更多信息是here。在

相关问题 更多 >

    热门问题