我正在调整/遵循Django Rest Framework的教程。
我使用本教程的序列化部分来返回用户(列表和详细信息视图)。
我的listview(列出所有用户)完美无缺。
我的详细信息视图并非如此。我可以看到序列化程序实例正在填充详细视图的用户,但是serializer.data是空的。
不会返回任何错误,只是空回复{}。
我做错了什么?
这有效:
@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
为空,但填充了序列化程序):
def parentDetails(request, pk):
"""
Retrieve or update a parent record
"""
try:
thisParent = PlatformUser.objects.filter(pk=pk)
except thisParent.DoesNotExist:
return HttpResponse(status=404)
if request.method == 'GET':
serializer=parentSerializer(thisParent)
return baseJSONResponse(serializer.data)
答案 0 :(得分:0)
您的查询集似乎是空的。
"除了不存在"过滤器是无用的。如果没有选中thisParent的对象将为空查询集但不引发异常。
如果要在不存在的对象上获取404并将对象作为queryset传递给序列化程序,则需要重写这样的代码。
thisParent = PlatformUser.objects.filter(pk=pk)
if not thisParent.exists():
return HttpResponse(status=404)
我建议您使用Rest Framework中的通用视图。