У меня есть сериализатор, который создает родительскую модель, а затем создает дочернюю модель в зависимости от некоторой информации, предоставленной родителю:
class InitializeFormSerializer(serializers.Serializer):
title = serializers.CharField()
category = serializers.ChoiceField(choices=CATEGORY_TYPES)
def create(self, validated_data, user):
identifier = validated_data.get('title')
obj, created = Parent.objects.update_or_create(
user=user,
)
if created:
item_type = validated_data.get('item_type')
if item_type == 'FIRST_TYPE':
Child1.objects.create(identifier=obj)
elif item_type == 'SECOND_TYPE':
Child2.objects.create(identifier=obj)
return obj
Это работает, но проверка item_type
выглядит неуклюжей.Есть ли в Django или Rest Framework парадигма, которую я пропускаю, которая могла бы сделать это более элегантным?
EDIT : Под элегантностью я подразумеваю, что это очень вручную и плохо масштабируется.Я предполагаю, что мой вопрос заключается в том, предоставляет ли Django или Rest Framework встроенный метод для создания типа дочерней модели в родительском сериализаторе.