Django jsonfields ValidationError: [u'Введите действительный JSON'] при обновлении с 1.7 до 1.9

Обновляю django с 1.7 до 1.9 путем замены пакетов, установленных в системе (Debian 8) через apt-get на пакеты, установленные через pip.

Итак, я установил пакет jsonfield из pip вместо старого доброго python-django-jsonfield apt и попытался запустить юнит-тесты.

Все мои jsonfields, определенные как jsonfield.JSONField(), не проходят тесты с сообщением:

ValidationError: [u'Enter valid JSON']

Раньше все работало нормально. Есть идеи, что изменилось?


person Boris Burkov    schedule 21.06.2016    source источник
comment
добавьте немного своего кода, который использует JSONField   -  person e4c5    schedule 22.06.2016
comment
@ e4c5 Спасибо за интерес. Я решил проблему и добавил к вопросу свои выводы о jsonfields в Django.   -  person Boris Burkov    schedule 22.06.2016
comment
Я думаю, вы должны опубликовать это как ответ. Вы, конечно, можете принять свой ответ. Тогда это будет полезно другим.   -  person e4c5    schedule 22.06.2016


Ответы (1)


В Django 1.7 я использовал jsonfield 0.9, но теперь я установил jsonfield 1, и между ними есть существенная разница. К сожалению, jsonfield 0.9 использует simplejson (from django.utils import simplejson as json), который недоступен в Django 1.9.

Поскольку я все равно использую Django 1.9 и в django.contrib.postgres.fields есть встроенная поддержка JSONField, я переключился на нее. Я решил свои проблемы, добавив null=True, blank=True к определению JSONField:

JSONField(null=True, blank=True)
person Boris Burkov    schedule 22.06.2016