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

时间:2015-10-26 11:47:26

标签: python django django-rest-framework

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

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

  1. /帖/标签= ABCDEF
  2. /帖/标签= ABCDEF
  3. /帖/标签= ABCDEF
  4. views.py

    class PostViewSet(viewsets.ReadOnlyModelViewSet):
        queryset = Post.objects.all()
        serializer_class = PostSerializer
    

2 个答案:

答案 0 :(得分:5)

假设您在帖子模型中有名为标记的字段,并且您的搜索网址格式为:

/posts/?tag=AbcDef

您可以执行区分大小写搜索,例如:

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

答案 1 :(得分:4)

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