我刚将这个旧的JSONField model snippet插入我的django应用程序中。看起来它正在工作,但只要服务器重新生效,就会抛出此警告:
$ sudo python manage.py runserver
Validating models...
/opt/bitnami/apps/django/lib/python2.6/site-packages/django/db/models/fields/subclassing.py:80:
DeprecationWarning: A Field class whose get_db_prep_save method hasn't been updated to take a `connection` argument.
new_class = super(SubfieldBase, cls).__new__(cls, name, bases, attrs)
0 errors found
这是什么意思?我该如何解决?
答案 0 :(得分:1)
这是一个警告,告诉您该代码段中实现的自定义JSON字段未包括the connection argument that has been introduced in django 1.2到期to multiple database support being implemented.
关于方法本身:如果您正在编写自定义模型字段,则可以使用 get_db_prep_save 将您正在使用的python对象(在本例中为JSON对象)转换为表单数据库后端在保存到数据库之前可以管理(在这种情况下是一个字符串)。 Here are the release notes mentioning it
关于连接参数,它引用当前数据库(在执行时 - 获取默认值,您可以调用django.db.connection
)并包含它以确保调用该方法时提供了正确的数据库,以便在将值保存到db之前可以执行任何自定义后端逻辑或转换。你可以read more about connections and cursors here
答案 1 :(得分:0)
您也可以使用http://pypi.python.org/pypi/django-jsonfield,它基本上是您提到的代码段的打包。
(我有一个较旧的版本给了我你提到的相同的连接错误;较新的版本修复了这个。)
答案 2 :(得分:0)
你也可以尝试这个:https://github.com/vialink/vlk-django-jsonfield
我们在某些项目中使用它并且工作正常。