Django过滤案例不敏感
我编写了此DJANGO视图集,该视图允许用户过滤和查询数据
from django_filters import rest_framework as filters
from rest_framework import viewsets
from API.models import Record
from API.serializers import RecordSerializer
class CountViewSet(viewsets.ReadOnlyModelViewSet):
"""List of all traffic count Counts"""
queryset = Record.objects.all().select_related("count")
serializer_class = RecordSerializer
filter_backends = (filters.DjangoFilterBackend,)
filterset_fields = (
"road",
"date",
"count_method",
"count_method__basic_count_method",
"count_method__detailed_count_method",
"location",
"road__direction",
"road__category",
"road__junc_start",
"road__junc_end",
"road__road__name",
"date__year",
"location__count_point_ref",
"road__category__name",
"road__junc_start__name",
"road__junc_end__name",
"road__direction__name",
)
,我想让它使情况变得不敏感,并允许部分包含一个字符串的搜索,以便用户可以在不知道正确的“道路名称”的情况下查询:例如:
curl -x get get /count/?road__category__name = ta“ -h”接受:application/json
I wrote this Django viewset that allows users to filter and query data
from django_filters import rest_framework as filters
from rest_framework import viewsets
from API.models import Record
from API.serializers import RecordSerializer
class CountViewSet(viewsets.ReadOnlyModelViewSet):
"""List of all traffic count Counts"""
queryset = Record.objects.all().select_related("count")
serializer_class = RecordSerializer
filter_backends = (filters.DjangoFilterBackend,)
filterset_fields = (
"road",
"date",
"count_method",
"count_method__basic_count_method",
"count_method__detailed_count_method",
"location",
"road__direction",
"road__category",
"road__junc_start",
"road__junc_end",
"road__road__name",
"date__year",
"location__count_point_ref",
"road__category__name",
"road__junc_start__name",
"road__junc_end__name",
"road__direction__name",
)
And I would like to make it case insensitive and allow searches that contain partially a string so that user can query without knowing the correct “road name” for example:
curl -X GET /count/?road__category__name=TA" -H "accept: application/json
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以尝试
ROAD__CATEGORY__NAME__ICONTAINS
如果它不起作用,则必须将其声明为自定义过滤器类中的方法,i
案例不敏感的信,文献资源:
django icontains doc.
You can try
road__category__name__icontains
if it doesn't work you have to declare it as a method filed in your Custom filter class,i
letter for Case-insensitive,Documentaion refference :
Django icontains Doc.