1

我正在将一个旧的 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 已被弃用。请改用 Field.from_db_value。

返回元(名称,基地,d)

如果我没看错,则该错误源于sixDjango 嵌入的自定义版本。我已经搜索了我的代码,但我似乎没有SubfieldBase在我自己的代码中使用任何地方。(我也用谷歌搜索了这个特殊的错误,但没有多大成功six。)

这只是我应该升级到 Django 1.10 的情况,并且该six包中的新版本将兼容,还是在升级之前我需要自己解决一些问题?

4

1 回答 1

2

啊啊啊。没有什么比发布您的问题更能引导您找到答案的想法了。

我意识到我应该更深入地研究错误:

$ 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,错误就会消失。

固定的!

于 2017-04-22T16:21:37.123 回答