在Django中保存嵌套的多对一模型

时间:2014-12-11 21:41:48

标签: django django-rest-framework

我在使用Django中的rest框架以多对一关系保存新Child时遇到了麻烦。出于某种原因,问题仅在创建新记录时出现,而不是在编辑现有记录时出现。

class Parent(models.Model):
    name_parent = models.CharField(max_length=200)

class Child(models.Model):
    parent = models.ForeignKey(Parent, related_name="children")
    name_child = models.CharField(max_length=200)

class ParentSerializer(serializers.ModelSerializer):
    class Meta:
        model = Parent
        fields = ('id', 'name_parent')

class ChildSerializer(serializers.ModelSerializer):
    class Meta:
        model = Child
        fields = ('id', 'parent', 'name_child')
        depth = 1

当我在depth = 1中没有ChildSerializer时,我可以使用以下json成功添加新的孩子:

{"id":"new", "name_child":"child", "parent":1}

现在有了depth,上面会抛出"non_field_errors": ["Invalid data"],而下面会抛出{"parent": ["This field cannot be null."]}

{"id":"new", "name_child":"child", "parent":{"id":1, "name_parent":"parent"}}

(如果我传递一些id值而不是new

,这个json可以正常编辑

0 个答案:

没有答案