Django REST framework POST запрос с динамическим полем внутри вложенного поля с использованием сериализатора
Я хочу отправить POST-запрос в API с двумя различными выборками данных, как показано ниже.
Данные POST имеют различную схему в ключе options в зависимости от ключа choice. Ключи внутри ключа options отличаются, за исключением нескольких общих полей.
Я хочу также проверять поля с помощью Serializer. Как я могу это решить?
Случай 1
{
  "name": "name1",
  "options": {
    "choice": "choice1",
    "common_option1": value1,
    "common_option2": value2,
    "choice1_option1": value3,
    "choice1_option2": value4
  }
}
Случай 2
{
  "name": "name2",
  "options": {
    "choice": "choice2",
    "common_option1": value5,
    "choice2_option1": value6,
    "choice2_option2": value7,
    "choice2_option3": value8
  }
}
 Вы можете переопределить метод update на вашем сериализаторе:
class MyModelSerializer(serializers.ModelSerializer):
    ...
        
    def update(self, instance, validated_data):
        
        # unpack options from initial data:
        options = self.initial_data['options']
        # option 1:
        if options['choice'] == 'choice1':
            # do something
        # option 2:
        elif options['choice'] == 'choice2':
            # do something else
        
        return super().update(instance, validated_data)