- PVSM.RU - https://www.pvsm.ru -
Формат представления данных в форме JSON встречается нередко. К примеру, одним из применений может быть обмен JSON данными при работе с API стороннего сервиса, а в других случаях JSON данные могут храниться внутри модели приложения. В некоторых случаях данные необходимо изменить и отправить обратно удалённому сервису, в других сохранить в модели.
Если вспомнить о формах и виджетах форм в Django — мощных инструментах, которые упрощают работу. А затем обратиться к исходному коду [1] и официальной документации [2] мы увидим список из почти 20 готовых виджетов, которые доступны нам. Кроме официальных источников, существует перевод на русский [3].
К сожалению, там не найти ничего, что облегчило бы работу с JSON данными. Если обратиться к поисковым системам, можно найти несколько постов на stackoverflow и частных блогах, где предлагаются решения, которые будут рабочие для некоторых случаев. К сожалению, одни примеры перестают работать на данных со сложной вложенной структурой JSON, а другие требуют использование JavaScript для сереализации и обратного процесса.
Я сделал попытку найти решение, которое:
Решение было найдено в форме виджета для формы. Вот демонстрация того, как виджет строит форму из JSON и после сохранения обратно собирает в JSON:
Надеюсь на то, что оно кому-то, кроме меня, сможет облегчить жизнь. Возможно, кто-то сможет предложить улучшения и/или конструктивную критику.
Решение и примеры выложены на Github [4]
Автор: vodka_ru
Источник [5]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/python/35219
Ссылки в тексте:
[1] исходному коду: https://github.com/django/django/blob/master/django/forms/widgets.py
[2] официальной документации: https://docs.djangoproject.com/en/1.5/ref/forms/widgets/
[3] перевод на русский: http://djbook.ru/rel1.5/ref/forms/widgets.html
[4] выложены на Github: https://github.com/abbasovalex/django-SplitJSONWidget-form
[5] Источник: http://habrahabr.ru/post/180847/
Нажмите здесь для печати.