我的URL有"营养师"查询参数,在这种情况下,它将获得具有id=1 的营养师的配置文件
/profiles?nutritionist=1
当我试着这样测试这种"过滤"时:
def test_get_user_belonging_to_a_nutritionist(self):
response = self.client.get("/profiles?nutritionist=1/",secure=True)
users = CustomUser.objects.filter(nutritionist=1)
serializer = CustomUserDetailsSerializer(users, many=True)
self.assertEqual(response.data, serializer.data)
响应包含HttpResponsePermanentRedirect对象,而不是正常响应
这是我的Views.py,如果它有助于
class GetProfilesViewSet(generics.ListAPIView):
serializer_class = CustomUserDetailsSerializer
def get_queryset(self):
"""
Optionally restricts the returned purchases to a given user,
by filtering against a `username` query parameter in the URL.
"""
queryset = CustomUser.objects.all()
nutritionist_id = self.request.query_params.get('nutritionist')
if nutritionist_id is not None:
queryset = queryset.filter(nutritionist=nutritionist_id)
return queryset
如何测试此案例?
查询参数应添加在/
之后,并与?
一起使用。
当存在多个查询参数时,请使用&
串联。
所以你的URL应该写成/profiles/?nutritionist=1
。
最后,建议使用查询过滤器(django-filter(,而不是覆盖get_queryset
方法。