Django 1.9.13抱怨SubfieldBase已被弃用,但我没有使用它。如何解决?

时间:2017-04-22 15:59:13

标签: python django deprecated six

我正在将一个旧的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将兼容,还是我需要在升级之前解决自己的问题?

1 个答案:

答案 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,错误就消失了。

固定!