gpt4 book ai didi

python - 实例化由多个 ModelSerializer 组成的 Serializer - Django Rest Framework

转载 作者:太空宇宙 更新时间:2023-11-03 17:28:51 25 4
gpt4 key购买 nike

我有两个 ModelSerializers:

class VariantSerializer(serializers.ModelSerializer):
class Meta:
model = Variant
fields = (
'id',
'name',
... and so on)

class PictureItemSerializer(serializers.ModelSerializer):
class Meta:
model = PictureItem
fields = (
'id',
... and so forth)

我想要做的是返回一个 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": []
}

最佳答案

创建序列化器实例时,需要将数据字典传递给序列化器。

假设 variant_data 包含 Variant 模型的数据,picture_items_data 包含 PictureItem 模型数据的列表。

创建一个包含它们的data字典。

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

关于python - 实例化由多个 ModelSerializer 组成的 Serializer - Django Rest Framework,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32200293/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com