父对象将如何在Django Restframework嵌套序列化程序中创建

时间:2018-12-16 13:37:56

标签: django django-rest-framework

如何在Django Restframework嵌套序列化程序中创建Parent对象? 我想显示与父母相关的所有孩子 但是问题是,当我尝试创建“父母”时,它会询问孩子名单,并且按照规则,第一位父母将出生

模型

class Parent(models.Model)                                          
    name = models.CharField(max_length=30)
class Child(models.Model)
    parent = models.ForeignKey(Parent, on_delete=models.CASCADE)
    name = models.CharField(max_length=30)

序列化器

class ChildSerializer(ModelSerializer):
    class Meta:
        model = Child
        fields = ('name')
class ParentSerializer(ModelSerializer):
    children = ChildSerializer(many=True)
    class Meta:
        model = Parent
        fields = ('name','children')

views.py

class ParentViewSet(ModelViewSet):
    serializer_class = ParentSerializer
    queryset = Parent.objects.all()

响应:

{
    "children": [
        "This field is required."
    ]
}

2 个答案:

答案 0 :(得分:1)

使用此更新您的父母消除器

class ParentSerializer(ModelSerializer):
children = ChildSerializer(many=True, read_only=True)
class Meta:
    model = Parent
    fields = ('name','children')

使用

更新childSerializer
class ChildSerializer(ModelSerializer):
class Meta:
    model = Child
    fields = ('name',)

答案 1 :(得分:0)

您需要将required=False添加到嵌套的ChildSerializer

class ParentSerializer(ModelSerializer):
    children = ChildSerializer(many=True, required=False)
    class Meta:
        model = Parent
        fields = ('name','children')