Как родительский объект будет создавать в Django Restframework вложенные сериализаторы - PullRequest
0 голосов
/ 16 декабря 2018

Как родительский объект будет создавать в Django Restframework вложенные сериализаторы?Я хочу показать всех потомков, связанных с родителем, но проблема в том, что когда я пытаюсь создать Родителя, он запрашивает список детей и, согласно правилу, первый родитель рождается

моделей

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 голосов
/ 16 декабря 2018

Вам необходимо добавить required=False к вашему вложенному ChildSerializer:

class ParentSerializer(ModelSerializer):
    children = ChildSerializer(many=True, required=False)
    class Meta:
        model = Parent
        fields = ('name','children')
0 голосов
/ 16 декабря 2018

обновить ваш parentserializer с этим

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',)
...