Django休息框架 - 如何进行不区分大小写的视图集搜索

ken*_*gcc 2 python django django-rest-framework

如何在rest框架的视图集中启用不区分大小写的搜索?

例如,假设Post模型有标签.下面的所有链接应该找到相同的标记内容,现在它们区分大小写并尝试搜索不同的值:

  1. /文章/标签= ABCDEF
  2. /文章/标签= ABCDEF
  3. /文章/标签= ABCDEF

views.py

class PostViewSet(viewsets.ReadOnlyModelViewSet):
    queryset = Post.objects.all()
    serializer_class = PostSerializer
Run Code Online (Sandbox Code Playgroud)

Anu*_*dra 6

假设你在Post模型中有一个名为tag的字段,你的搜索网址是这样的形式:

/posts/?tag=AbcDef
Run Code Online (Sandbox Code Playgroud)

你可以做区分大小写的搜索,例如:

class PostViewSet(viewsets.ReadOnlyModelViewSet): 
    serializer_class = PostSerializer

    def get_queryset(self):
        keyword = self.request.query_params.get('tag', '')
        queryset = Post.objects.filter(tag__iexact=keyword)
        return queryset
Run Code Online (Sandbox Code Playgroud)


Ben*_*are 5

您是否考虑过使用http://www.django-rest-framework.org/api-guide/filtering/#searchfilter?默认情况下,这不区分大小写。