2013-12-12 6 views
1

У моего кода на Python есть поля с именем вроде field_name, который отлично подходит для python и хорошо работает с Django.Можно ли переименовать поля в django restframework

Много Javascript linters хотят, чтобы вы сделали это fieldName, или они скулили на вас много.

Пытаясь найти хороший общий язык между этими двумя, я написал сериализаторов как

class MySerializer(serializers.ModelSerializer): 
    fieldName = serializers.WritableField(source='field_name', required=True) 
    class Meta: 
     model = Widget 
     exclude = ('field_name',) 

Проблема в том, что это не заменяет внешнее представление field_name с FIELDNAME, он посылает как FIELDNAME и field_name. Поэтому я сказал ему исключить ('field_name'). Затем, когда вы пытаетесь сохранить, он сильно расстраивается, потому что имя_файла отсутствует, или fieldName не является членом объекта.

Я думал, что сопоставление будет хорошим способом сделать это, но, похоже, это не так. Есть ли способ сопоставить имена из python -> javascript, чтобы код выглядел красиво на обоих концах?

ответ

2

Найденный пакет, который заботится о ней на уровне JSon:

https://pypi.python.org/pypi/djangorestframework-camel-case/0.1.0

Документации очень редко, но это, кажется, работает, и интегрируя это тривиальное (который мог бы объяснить разреженные документации) ,

2

Вы код должен работать. Итак, что-то не хватает на примере

Вещь, которая приходит на ум, - это ваше значение fields - что вы там указали? Обычно лучше явно указывать поля, которые вы там хотите, а не использовать exclude - для настройки (возможно) требуется больше времени, но это сэкономит время в долгосрочной перспективе.

Если fieldName включен в fields и field_name, я не ожидал, что ваш код будет работать.

(Возможно, показать немного больше, если это не решить.)

Update после редактирования на вопрос

Ok. Да. Вы должны указать нужные поля. Ваш fieldName действует как дополнительное поле со своим источником как field_name - вот что полезно при использовании SerializerMethodField, например.

Обновление: Дополнительное решение

Там в ticket asking about Camel-casing field names for better compatibility with e.g. JavaScript clients. Это ссылки на Gist with a working solution via custom renderer and parser classes.

+0

Я обновил код до того, что использую. Я получаю оба значения fieldName и field_name в выводе, если у меня нет строки исключения. Приятно знать, что я не отсюда, когда дело доходит до этого. К сожалению, у нас нет плункера для питона. – boatcoder

Смежные вопросы