Django DRF:listview获取工作,detailview返回空响应
请容忍我。我在做一些傻事,但我不知道是什么 我正在改编/遵循教程 我使用教程的序列化部分返回用户(列表和详细视图) 我的listview(列出所有用户)工作正常 我的detailview没有。我可以看到serializer实例正在填充详细视图的用户,但是serializer.data为空 没有返回错误,只是一个空的回复{} 我做错了什么 这项工作:Django DRF:listview获取工作,detailview返回空响应,django,django-rest-framework,Django,Django Rest Framework,请容忍我。我在做一些傻事,但我不知道是什么 我正在改编/遵循教程 我使用教程的序列化部分返回用户(列表和详细视图) 我的listview(列出所有用户)工作正常 我的detailview没有。我可以看到serializer实例正在填充详细视图的用户,但是serializer.data为空 没有返回错误,只是一个空的回复{} 我做错了什么 这项工作: @csrf_exempt def parentList(request): """ List all parents or crea
@csrf_exempt
def parentList(request):
"""
List all parents or create a new parent
"""
if request.method == 'GET':
theseParents = PlatformUser.objects.all()
serializer = parentSerializer(theseParents, many=True)
return baseJSONResponse(serializer.data)
序列化程序中的代码段:
class parentSerializer(serializers.ModelSerializer):
class Meta:
model = PlatformUser
fields = ('pk', 'email', 'first_name', 'last_name', 'phone', 'home_address_1', 'home_address_2', 'city', 'country', 'home_postcode', 'photo', 'overview')
这不起作用(serializer.data
为空,但已填充序列化程序):
你的查询集似乎是空的 “除DoesNotExists外”是带过滤器的usless。如果未选择任何对象,则此父对象将为空queryset但不会引发异常 若要在不存在的对象上获得404并将对象作为queryset传递给序列化程序,则需要像这样重写代码
thisParent = PlatformUser.objects.filter(pk=pk)
if not thisParent.exists():
return HttpResponse(status=404)
我建议您使用Rest框架中的通用视图。谢谢-我不认为我的查询集是空的。。。。对于上面代码中的最后一行
return baseJSONResponse(serializer.data)
我可以看到serializer
有一个有效的queryset(列表中预期有一个用户),但是serializer.data是空的,不应该是。。。另外,我正在查询已知用户的主键。传递到序列化程序实例不是querysetserializer=parentSerializer(thisParent[0])
,或者最好重写代码以使用一个对象,而不是querysetthisParent=PlatformUser.objects.get(pk=pk)
这就是问题所在-我向它发送了一个查询集,它实际上需要一个实例。请您将您的评论(“传递到序列化程序…”转换为答案,我会将其标记为接受?
thisParent = PlatformUser.objects.filter(pk=pk)
if not thisParent.exists():
return HttpResponse(status=404)