目前我正在使用django rest_framework。我有两个不同的类名,分别为Customer和Customerinfo。我的代码正常工作。现在,我想在客户序列化器中插入值。在CustomerSerializer中,它具有Customerinfo字段。 这些是序列化器:
class CustomerinfoSerializer(serializers.ModelSerializer):
class Meta:
model = Choice
fields = ['id','phone']
class CustomerSerializer(serializers.ModelSerializer):
info = CustomerinfoSerializer(many=True, source='customerinfo_set')
class Meta:
model = Question
fields = ["id","name","info"]
如何使用post方法插入值?样本值为:
{
"name": "user10",
"info":
[
{ "phone":12345
},
{ "phone":54321
}
]
}
答案 0 :(得分:2)
如果我正确理解您对writable nested serializers的关注。
如文档所述,
默认情况下,嵌套序列化器是只读的。如果你想支持 您需要创建的对嵌套序列化器字段的写操作 create()方法。
您可以尝试类似的操作(但需要调整命名):
class CustomerSerializer(serializers.ModelSerializer):
info = CustomerinfoSerializer(many=True, source='customerinfo_set')
class Meta:
model = Question
fields = ["id", "name", "info"]
def create(self, validated_data):
info_data = validated_data.pop('info')
question = Question.objects.create(**validated_data)
for info in info_data:
Choice.objects.create(question=question, **info)
return question