使用django rest api过滤以。开头的用户名

时间:2017-03-06 08:05:24

标签: django django-rest-framework

这可能是一个否定的怀疑。我正在使用django rest框架和反应原生前端。我正在搜索用户名。所以我想返回类似于输入的用户名,例如如果用户开始输入,那么它应该返回:

  1. 吉姆
  2. 吉米......
  3. 我正在使用以下内容尝试和检索用户名,但只有在输入完整用户名时才会返回数据。

    class SearchForUsers(generics.ListAPIView):
        serializer_class = UserAndProfileSerializer
        def get_queryset(self):
           uname = self.kwargs['username']
           queryset = User.objects.all()
           queryset = queryset.filter(username=uname)
    
        return queryset
    

    应该使用queryset.filter的替代方法来动态获取用户名和详细信息?

2 个答案:

答案 0 :(得分:3)

您需要检查用户输入的用户名contains,最好是icontains,以便其不区分大小写

queryset = queryset.filter(username__icontains=uname)

如果您只是想知道用户名是否以文字开头,请使用startswithistartswith

queryset = queryset.filter(username__istartswith=uname)

答案 1 :(得分:0)

您可以考虑使用SearchFilter。像这样:

class SearchForUsers(generics.ListAPIView):
    queryset = User.objects.all()
    serializer_class = UserAndProfileSerializer
    filter_backends = (filters.SearchFilter,)
    search_fields = ('username')