Django JSONField错误:一个Field类,其get_db_prep_save方法尚未更新为带有`connection`参数

时间:2011-11-21 23:44:58

标签: django json

我刚将这个旧的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

这是什么意思?我该如何解决?

3 个答案:

答案 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

我们在某些项目中使用它并且工作正常。