我正在将一个旧的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:ReaddInDjango110Warning:不推荐使用SubfieldBase。请改用Field.from_db_value。
返回元(名称,基数,d)
如果我正确地阅读此错误,则错误源于Django嵌入的自定义版本six
。我搜索了我的代码,我似乎没有在我自己的代码中的任何地方使用SubfieldBase
。 (对于six
中的这个特殊错误,我也用Google搜索,但没有太大成功。)
这只是我应该升级到Django 1.10的情况,并且该软件包中的新版six
将兼容,还是我需要在升级之前解决自己的问题?
答案 0 :(得分:2)
Ahaaaa。没有什么比发布你的问题慢跑一个让你得到答案的想法。
我意识到我应该深入研究错误:
$ python -Werror manage.py runserver
使用该堆栈跟踪,我得到一行显示:
文件“/Users/mboszko/.virtualenvs/opticaldev/lib/python2.7/site-packages/django_date_extensions/fields.py”,第99行,
类ApproximateDateField(with_metaclass(models.SubfieldBase,models.CharField)):
因此,使用SubfieldBase
实际上是在我安装的软件包django-date-extensions中。在我的virtualenv中这是1.1.0,一旦我pip install --upgrade django-date-extensions
将它提升到2.0,错误就消失了。
固定!