Python 实例化由多个ModelSerializer组成的序列化程序-Django Rest框架
我有两个ModelSerializer:Python 实例化由多个ModelSerializer组成的序列化程序-Django Rest框架,python,django-rest-framework,Python,Django Rest Framework,我有两个ModelSerializer: class VariantSerializer(serializers.ModelSerializer): class Meta: model = Variant fields = ( 'id', 'name', ... and so on) 及 我要做的是返回一个JSON,其中包括VariantSerializer的一个实例和Pi
class VariantSerializer(serializers.ModelSerializer):
class Meta:
model = Variant
fields = (
'id',
'name',
... and so on)
及
我要做的是返回一个JSON,其中包括VariantSerializer的一个实例和PictureItemSerializer的多个实例
我创建了另一个序列化程序:
class PictureItemUploadSerializer(serializers.Serializer):
variant = VariantSerializer()
pictureItems = PictureItemSerializer(many=True)
但是如果您愿意,我很难实例化序列化程序的这个“组合”
这不起作用:
p = PictureItemUploadSerializer()
p.variant = variant_serializer
p.pictureItems = picture_item_serializer
return Response(p.data, status=status.HTTP_201_CREATED)
当它产生空数据时:
{
"variant": {
"name": ""
},
"pictureItems": []
}
创建序列化程序实例时,需要将数据字典传递给序列化程序
p = PictureItemUploadSerializer(data=data) # pass the data dictionary
p.is_valid(raise_exception=True) # check if serializer is valid
return Response(p.data, status=status.HTTP_201_CREATED) # return response
假设variant\u data
包含variant
模型的数据,picture\u项目\u data
包含PictureItem
模型数据的列表
创建包含它们的数据
字典
data = {'variant': variant_data, 'pictureItems': picture_items_data}
然后将此数据传递给序列化程序
p = PictureItemUploadSerializer(data=data) # pass the data dictionary
p.is_valid(raise_exception=True) # check if serializer is valid
return Response(p.data, status=status.HTTP_201_CREATED) # return response