【发布时间】:2016-02-26 06:17:18
【问题描述】:
我有这个代码
# Models
class Parent(models.Model):
something = models.CharField(max_length=255)
class Child1(models.Model):
thing = models.BooleanField()
parent = models.ForeignKey(Parent)
# Serializers
class Child1Serializer(BaseSerializer):
class Meta:
model = Child1
fields = ('thing', 'parent')
class Child2Serializer(BaseSerializer):
class Meta:
model = Child2
fields = ('thing', 'parent')
class ParentSerializer(BaseSerializer):
sisters = Child1Serializer(many=True)
cousins = Child2Serializer(many=True)
现在,当我在 Child1 中发帖,然后在 json 中传递父级时,一切正常
但是当我想编写嵌套的父序列化程序时,子也会自动创建
"sisters": [
{
"thing": "tom"
}
],
"cousins": [
{
"thing": "mike"
},
]
然后我不需要传递 parent,因为我将在 create 方法中手动分配
def create(self, validated_data):
sisters = validated_data.pop('sisters')
parent = Parent.objects.create(**validated_data)
for obj in sisters:
Child1.objects.create(parent=parent, **obj)
return parent
问题是当我发布父级时,我收到验证错误,在姐妹中,该父级是必需的
【问题讨论】:
-
尝试使用 django smart-select
-
在创建父级之前,您是否从
validated_data弹出cousins? -
@Anush 不,这只是例子
标签: python json django django-rest-framework