这可能是一个否定的怀疑。我正在使用django rest框架和反应原生前端。我正在搜索用户名。所以我想返回类似于输入的用户名,例如如果用户开始输入,那么它应该返回:
我正在使用以下内容尝试和检索用户名,但只有在输入完整用户名时才会返回数据。
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的替代方法来动态获取用户名和详细信息?
答案 0 :(得分:3)
您需要检查用户输入的用户名contains
,最好是icontains
,以便其不区分大小写
queryset = queryset.filter(username__icontains=uname)
如果您只是想知道用户名是否以文字开头,请使用startswith
或istartswith
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')