Как сериализовать JSON с именем настраиваемого атрибута в Django Rest Framework - PullRequest
0 голосов
/ 19 января 2020

Мне нужно проверить следующее JSON, используя Django Сериализатор Rest Framework:

{
  "type": "profit",
  "value": 7200
}

Мой сериализатор определен как:

class SaleSerializer(serializers.Serializer):
    TYPE_CHOICES = [
        'profit',
        'cost',
    ]
    type = serializers.ChoiceField(choices=TYPE_CHOICES)
    value = serializers.IntegerField(validators=[MaxValueValidator(limit_value=10000), MinValueValidator(limit_value=0)], allow_null=False)

Однако тип является одним из Python встроенный, поэтому я не хочу использовать его для моего сериализатора. Как я могу определить мой сериализатор так, чтобы type на входе JSON было бы, например, сериализовано в sale_type? Например, я хотел бы определить мой сериализатор следующим образом:

class SaleSerializer(serializers.Serializer):
    TYPE_CHOICES = [
        'profit',
        'cost',
    ]
    sale_type = serializers.ChoiceField(choices=TYPE_CHOICES)
    value = serializers.IntegerField(validators=[MaxValueValidator(limit_value=10000), MinValueValidator(limit_value=0)], allow_null=False)

1 Ответ

0 голосов
/ 19 января 2020

Для этой цели существует source аргумент ключевого слова.

Заменить type = serializers.ChoiceField(choices=TYPE_CHOICES) на:

type = serializers.ChoiceField(source='sale_type', choices=TYPE_CHOICES)

...