Эй, я работаю в 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.