Django 1.9.13 抱怨 SubfieldBase 已弃用,但我没有使用它。如何解决?
Django 1.9.13 complains SubfieldBase is deprecated, but I'm not using it. How to resolve?
我正在将一个旧的 Django 项目从 Django 1.8.3 升级到当前的 Django 1.11,但为了谨慎起见,我一直在升级到 Django 的每个主要版本,所以我可以找到错误和弃用并修复他们在采取下一步之前。 (我已经快两年没碰过这段代码了,所以有点生疏了;如果我犯了一个简单的错误,请原谅我。)
我首先升级到 Django 1.9.13(1.10 之前的最后一个),当我 manage.py runserver
时,我得到这个错误:
/Users/mboszko/.virtualenvs/opticaldev/lib/python2.7/site-packages/django/utils/six.py:808: RemovedInDjango110Warning: SubfieldBase has been deprecated. Use Field.from_db_value instead.
return meta(name, bases, d)
如果我没看错这个错误,那么错误源于 Django 嵌入的 six
的自定义版本。我搜索了我的代码,我似乎没有在我自己的代码中的任何地方使用 SubfieldBase
。 (我也用谷歌搜索了 six
中的这个特定错误,但收效甚微。)
这只是我应该升级到 Django 1.10 的情况,并且该包中的 six
的新版本将兼容,还是在升级之前我需要自己解决一些问题?
啊哈啊。没有什么比发布您的问题更能让您找到答案的想法了。
我意识到我应该更深入地研究错误:
$ python -Werror manage.py runserver
有了那个堆栈跟踪,我得到一行显示:
File "/Users/mboszko/.virtualenvs/opticaldev/lib/python2.7/site-packages/django_date_extensions/fields.py", line 99, in
class ApproximateDateField(with_metaclass(models.SubfieldBase, models.CharField)):
所以,SubfieldBase
的使用实际上是在一个包里面,我已经安装了,django-date-extensions。这是我的 virtualenv 中的 1.1.0,一旦我 pip install --upgrade django-date-extensions
将其提升到 2.0,错误就消失了。
已修复!
我正在将一个旧的 Django 项目从 Django 1.8.3 升级到当前的 Django 1.11,但为了谨慎起见,我一直在升级到 Django 的每个主要版本,所以我可以找到错误和弃用并修复他们在采取下一步之前。 (我已经快两年没碰过这段代码了,所以有点生疏了;如果我犯了一个简单的错误,请原谅我。)
我首先升级到 Django 1.9.13(1.10 之前的最后一个),当我 manage.py runserver
时,我得到这个错误:
/Users/mboszko/.virtualenvs/opticaldev/lib/python2.7/site-packages/django/utils/six.py:808: RemovedInDjango110Warning: SubfieldBase has been deprecated. Use Field.from_db_value instead.
return meta(name, bases, d)
如果我没看错这个错误,那么错误源于 Django 嵌入的 six
的自定义版本。我搜索了我的代码,我似乎没有在我自己的代码中的任何地方使用 SubfieldBase
。 (我也用谷歌搜索了 six
中的这个特定错误,但收效甚微。)
这只是我应该升级到 Django 1.10 的情况,并且该包中的 six
的新版本将兼容,还是在升级之前我需要自己解决一些问题?
啊哈啊。没有什么比发布您的问题更能让您找到答案的想法了。
我意识到我应该更深入地研究错误:
$ python -Werror manage.py runserver
有了那个堆栈跟踪,我得到一行显示:
File "/Users/mboszko/.virtualenvs/opticaldev/lib/python2.7/site-packages/django_date_extensions/fields.py", line 99, in
class ApproximateDateField(with_metaclass(models.SubfieldBase, models.CharField)):
所以,SubfieldBase
的使用实际上是在一个包里面,我已经安装了,django-date-extensions。这是我的 virtualenv 中的 1.1.0,一旦我 pip install --upgrade django-date-extensions
将其提升到 2.0,错误就消失了。
已修复!