我有一个使用rest框架的django应用程序,我在serializers.py中序列化模型如下:
class CourseSerializer(serializers.ModelSerializer):
class Meta:
model = Course
depth = 1
我输入api的输出如下:
[
{
"course_id": 992,
},
{
"course_id": 994,
}
]
但是现在我想调整一下json结构,我想获得如下输出:
[
{
"course": {
"course_id": 992,
}
},
{
"course": {
"course_id": 994,
}
}
]
这是我的api.py:
class CourseSubjectList(APIView):
def get(self, request, pk, format=None):
subs = Course.objects.all()
serialized_subs = CourseSerializer(subs, many=True)
return Response(serialized_subs.data)
我如何实现这一目标?
答案 0 :(得分:2)
您可能需要为CourseSerializer
实现一个包装器。请尝试下面的代码。
class CourseSerializer(serializers.ModelSerializer):
class Meta:
model = Course
depth = 1
class CourseWrapperSerializer(serializers.Serializer):
course = CourseSerializer(read_only=True, source='*')
这里至关重要的是source='*
,表示整个对象应该传递给字段。然后在您的视图中使用包装器而不是原始序列化器。
class CourseSubjectList(APIView):
def get(self, request, pk, format=None):
subs = Course.objects.all()
serialized_subs = CourseWrapperSerializer(subs, many=True)
return Response(serialized_subs.data)