DRF - Сериализатор полей "исходный" аргумент неясное поведение - PullRequest
0 голосов
/ 24 октября 2018

Итак, рассмотрим следующее:

>>> d = {'macAddress': '00:00:00:00:00:00'}
>>> s = DeviceSerializer(data=d)
>>> s
DeviceSerializer(data={'macAddress':'00:00:00:00:00:00'}):
    mac_address = CharField(max_length=20, source='macAddress')
>>> s.is_valid()
False
>>> s.errors
{'mac_address': [ErrorDetail(string='This field is required.', code='required')]}

Исходя из приведенного выше простого примера и моего текущего понимания аргумента поля source, я ожидал бы, что поле mac_address будет автоматически отображено на macAddress во входных данных и сериализаторе, чтобы быть действительным.

Почему это не так?

Спасибо всем, кто хочет помочь:)

1 Ответ

0 голосов
/ 24 октября 2018

Это как раз наоборот.source - это то, что находится на стороне Python, а имя поля на стороне / API.

data = {'mac_address':'00:00:00:00:00:00'}

приведет к:

validated_data == {'macAddress':'00:00:00:00:00:00'}
...