Django jsonfields ValidationError: [u'Enter valid JSON'] 从 1.7 升级到 1.9

Posted

技术标签:

【中文标题】Django jsonfields ValidationError: [u\'Enter valid JSON\'] 从 1.7 升级到 1.9【英文标题】:Django jsonfields ValidationError: [u'Enter valid JSON'] upon upgrade from 1.7 to 1.9Django jsonfields ValidationError: [u'Enter valid JSON'] 从 1.7 升级到 1.9 【发布时间】:2016-10-23 11:43:50 【问题描述】:

我正在将 django 从 1.7 升级到 1.9,方法是将通过 apt-get 安装在系统 (Debian 8) 中的软件包替换为通过 pip 安装的软件包。

所以,我从 pip 安装了 jsonfield 包,而不是 apt 的旧 python-django-jsonfield 并尝试运行单元测试。

我所有的 jsonfields,定义为 jsonfield.JSONField(),测试失败并显示消息:

ValidationError: [u'Enter valid JSON']

之前一切正常。有什么想法,有什么改变?

【问题讨论】:

添加一些使用 JSONField 的代码 @e4c5 感谢您的关注。我解决了这个问题,并将我对 Django 中 jsonfields 的发现添加到问题中。 我认为您应该将其发布为答案。你当然可以接受你的回答。那么它就会对其他人有用。 【参考方案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=Trueblank=True 添加到JSONField 定义解决了我的问题:

JSONField(null=True, blank=True)

【讨论】:

以上是关于Django jsonfields ValidationError: [u'Enter valid JSON'] 从 1.7 升级到 1.9的主要内容,如果未能解决你的问题,请参考以下文章

django jsonfield 保存到数据库

Django JSONField 不保存 0 值

Django 1.9 JSONField 更新行为

Django JSONField 过滤

django orm JSONField for mysql

ArrayField 中的 Django JSONField