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)