Как создать связанные объекты в сериализаторе и сериализовать его - PullRequest
0 голосов
/ 30 марта 2020

Эй, я работаю в Django 2.2. У меня проблема с сериализацией данных с помощью пользовательской функции создания. Допустим, у нас есть 2 модели:

class Model1(models.Model):
    a = models.CharField(max_length=200)
    b = models.IntegerField()


class Model2(models.Model):
    c = models.ForeignKey(Model1, on_delete=models.CASCADE
    d = models.CharField(max_length=150)


class Model3(models.Model):
    e = models.ForeignKey(Model1, on_delete=models.CASCADE)

У этих моделей есть сериализаторы:

class Model2Serializer(serializer.ModelSerializer):
    class Meta:
        model = models.Model2
        fields = ['d']


class Model1Serializer(serializer.ModelSerializer):
    model2_set = Model2Serializer(many=True)

    class Meta:
        model = models.Model1
        fields = ['a', 'b', 'model2_set']

    def create(self, validated_data):
        model2_params = validated_data.pop(u'model2_set', [])

        model1 = super(Model1Serializer, self).create(validated_data)
        model2_objects = [models.Model2(model1=model1, **model2_params) for model2_param in model2_params]
        models.Model1.objects.bulk_create(model2_objects)

        return model1


class Model3Serializer(serializer.ModelSerializer):
    model1 = Model1Serializer()

    class Meta:
        model = models.Model3
        fields = ['model1']

Эта пользовательская функция создания хорошо работает. Моя проблема в том, что теперь я хочу получить вложенные данные в сериализаторе Model3.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...