创建一个django序列化器,一次创建三个模型实例


{

"product_name": "CRVRVgfhghg",
"product_price": "0.01",
"product_location": "KIKUYU,KENYA",
"product_description": "VFVFVFVFVFVF",
"product_category_name": "livestock",
"product_farmer_name": "james",
"product_category_data": {
"product_category_name": "livestock",
"product_category_description": "livestock one"
},
"product_product_file_data": {
"product_file_name": "ok"
}
}

我有三个表:product_category,product and product_product_files…我想要的是填充所有三个表一次使用一个视图和url模式…有一种方法,我可以做到这一点使用序列化器??

我想你正在寻找的是以下文档DRF可写嵌套序列化器。

看一下,你会发现它们是这样写的:

'默认情况下,嵌套序列化器是只读的。如果希望支持对嵌套序列化器字段的写操作,则需要创建create()和/或update()方法,以便显式指定如何保存子关系:'

这是他们使用的例子:

class TrackSerializer(serializers.ModelSerializer):
class Meta:
model = Track
fields = ['order', 'title', 'duration']

class AlbumSerializer(serializers.ModelSerializer):
tracks = TrackSerializer(many=True)
class Meta:
model = Album
fields = ['album_name', 'artist', 'tracks']
def create(self, validated_data):
tracks_data = validated_data.pop('tracks')
album = Album.objects.create(**validated_data)
for track_data in tracks_data:
Track.objects.create(album=album, **track_data)
return album

他们输入的数据应该是这样的:

data = {
'album_name': 'The Grey Album',
'artist': 'Danger Mouse',
'tracks': [
{'order': 1, 'title': 'Public Service Announcement', 'duration': 245},
{'order': 2, 'title': 'What More Can I Say', 'duration': 264},
{'order': 3, 'title': 'Encore', 'duration': 159},
],

看你的代码片段,我猜这些模型是一对一的关系。在本例中,many=False也是默认值。你可以对两个模型都这样做。

我想你可以通过这些信息找到正确的代码,如果没有,请告诉我。

最新更新