DRF создает сериализатор для вложенных OneToOnefield
У меня есть несколько моделей, в которых есть OnetoOnefield. Вопрос, как я могу обновить их, чтобы создать метод сериализатора, и создать все поля в ModelB и ModelC из ModelA с помощью OnetoOnefield. Если это возможно?
Модели:
class ModelA(models.Model):
name = models.TextField()
record = models.OneToOneField(ModelB)
class ModelB(models.Model):
description = models.TextField()
link = models.OneToOneField(ModelC)
class ModelC(models.Model):
name = models.TextField()
Сериализаторы:
class RecordSerializer(ModelSerializer):
link = LinkSerializer()
class Meta:
model = ModelB
fields = '__all__'
class TestSerializer(ModelSerializer):
record = RecordSerializer()
class Meta:
model = ModelA
fields = '__all__'
def create(self, validated_data):
record_data = validated_data.pop('record')
record = RecordSerializer.create(RecordSerializer(), validated_data=record_data)
modelA, created = ModelA.objects.create(record=record)
return modelA
Вид
class TestViewSet(ListModelMixin,
RetrieveModelMixin,
CreateModelMixin,
GenericViewSet):
permission_classes = [IsAuthenticated]
serializer_class = TestSerializer
queryset = ModelA.objects.all()