2017-04-22 3 views
1

Je suis en train de mettre à niveau un ancien projet Django de Django 1.8.3 vers Django 1.11, mais pour être prudent, je suis en train de passer à chaque version majeure de Django, donc je peux trouver des erreurs et les corriger avant de prendre l'étape suivante. (Je n'ai pas touché ce code depuis presque deux ans, donc je suis un peu rouillé, pardonnez moi si je commets une simple erreur.)Django 1.9.13 se plaint SubfieldBase est obsolète, mais je ne l'utilise pas. Comment résoudre?

J'ai d'abord mis à jour vers Django 1.9.13 (le dernier avant 1.10), et quand je manage.py runserver, je reçois cette erreur:

/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)

Si je lis ce droit d'erreur, l'erreur provient de la version personnalisée de six que Django intègre. J'ai cherché mon code, et je ne semble pas utiliser SubfieldBase n'importe où dans mon propre code. (Je ai également googlé, avec pas beaucoup de succès, pour cette erreur particulière dans six.)

Est-ce juste une situation où je devrais mettre à niveau vers Django 1.10, et la nouvelle version de six dans ce paquet sera compatible, ou Y a-t-il quelque chose que je dois résoudre avant de mettre à niveau?

Répondre

1

Ahaaaa. Rien de tel que poster votre question pour faire du jogging une pensée qui vous mène à la réponse.

je réalise que je devrais creuser plus profondément dans l'erreur:

$ python -Werror manage.py runserver 

Avec cette trace de la pile, je reçois une ligne indiquant:

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)):

Ainsi, l'utilisation de SubfieldBase est en fait à l'intérieur d'un paquet , J'avais installé, django-date-extensions. C'était à 1.1.0 dans mon virtualenv, et une fois que j'ai fait pip install --upgrade django-date-extensions pour l'amener à 2.0, l'erreur disparaît.

Fixé!