Ошибка обновления до django 1.11.12 в models / manager.py serve_to_class

Я давно не касался проекта и понял, что обновил свой django до версии 1.11.12. Попытка перезапустить проект (сервер запуска) и обнаружила несколько устаревших пакетов (easy-эскизы и psycopg2). Запустил pip install upgrade на тех. Теперь, когда я бегу, я получаю следующую ошибку, и кажется, что она исходит от моих моделей? Не знаю, о чем он мне говорит, или о правильном порядке действий. Может быть, я пропустил еще один этап обновления, когда перешел на django 1.11? (извините, прошло много времени с тех пор, как я коснулся этого кода)

Unhandled exception in thread started by <function wrapper at 0x104ab2500>
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site-packages/django/utils/autoreload.py", line 228, in wrapper
    fn(*args, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/django/core/management/commands/runserver.py", line 116, in inner_run
    autoreload.raise_last_exception()
  File "/usr/local/lib/python2.7/site-packages/django/utils/autoreload.py", line 251, in raise_last_exception
    six.reraise(*_exception)
  File "/usr/local/lib/python2.7/site-packages/django/utils/autoreload.py", line 228, in wrapper
    fn(*args, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/django/__init__.py", line 27, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/usr/local/lib/python2.7/site-packages/django/apps/registry.py", line 108, in populate
    app_config.import_models()
  File "/usr/local/lib/python2.7/site-packages/django/apps/config.py", line 202, in import_models
    self.models_module = import_module(models_module_name)
  File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/Users/shane.thomas/programming/sw_nga_site/swsite/models.py", line 12, in <module>
    from filer.fields.image import FilerImageField
  File "/usr/local/lib/python2.7/site-packages/filer/fields/image.py", line 4, in <module>
    from ..models import Image
  File "/usr/local/lib/python2.7/site-packages/filer/models/__init__.py", line 3, in <module>
    from .clipboardmodels import *  # flake8: noqa
  File "/usr/local/lib/python2.7/site-packages/filer/models/clipboardmodels.py", line 9, in <module>
    from . import filemodels
  File "/usr/local/lib/python2.7/site-packages/filer/models/filemodels.py", line 18, in <module>
    from .foldermodels import Folder
  File "/usr/local/lib/python2.7/site-packages/filer/models/foldermodels.py", line 240, in <module>
    mptt.register(Folder)
  File "/usr/local/lib/python2.7/site-packages/mptt/__init__.py", line 12, in register
    from mptt.models import MPTTModelBase
  File "/usr/local/lib/python2.7/site-packages/mptt/models.py", line 379, in <module>
    class MPTTModel(six.with_metaclass(MPTTModelBase, models.Model)):
  File "/usr/local/lib/python2.7/site-packages/django/utils/six.py", line 808, in __new__
    return meta(name, bases, d)
  File "/usr/local/lib/python2.7/site-packages/mptt/models.py", line 262, in __new__
    cls = super_new(meta, class_name, bases, class_dict)
  File "/usr/local/lib/python2.7/site-packages/django/db/models/base.py", line 162, in __new__
    new_class.add_to_class(obj_name, obj)
  File "/usr/local/lib/python2.7/site-packages/django/db/models/base.py", line 325, in add_to_class
    value.contribute_to_class(cls, name)
  File "/usr/local/lib/python2.7/site-packages/mptt/managers.py", line 81, in contribute_to_class
    super(TreeManager, self).contribute_to_class(model, name)
  File "/usr/local/lib/python2.7/site-packages/django/db/models/manager.py", line 120, in contribute_to_class
    setattr(model, name, ManagerDescriptor(self))
AttributeError: can't set attribute

Похоже, вам нужно обновить свою версию MPTT; вам, вероятно, следует обновить и другие зависимости.

Daniel Roseman 01.05.2018 17:38

хороший звонок, выполнение pip install -U django-mptt исправил его, затем возникла ошибка файла. Обновил, что все еще появляется ошибка файла, так что копайте глубже. Я подумал, что есть способ как-то сказать «обновить все в моем проекте». Давно не трогал эту штуку :(

Codejoy 01.05.2018 18:07

Похоже, что django-filer не работает под django 1.10 или выше: /

Codejoy 01.05.2018 18:27

Дополнительное примечание, которое вы, вероятно, уже слышали: лучше использовать виртуальную среду для каждого проекта, чтобы избежать этих сюрпризов. Имея виртуальную среду, вы можете обновить ее по своему собственному расписанию.

Dashdrum 01.05.2018 18:48

Или перейти на более раннюю версию, если есть проблема? Я предполагаю, что это virtualenv? Я должен был все настроить таким образом, фактически возвращаясь к коду, я мог сказать, что я узнал намного больше, чем когда я впервые начал этот проект. Хотя мне любопытно. Как с помощью VE предотвратить эти сюрпризы? Я понимаю суть, но не понимаю, как у меня не было бы таких же проблем в этой среде? Не нуждаясь в длинном ответе здесь, я думаю, это хорошая тема для Google, и прошло некоторое время с тех пор, как я нырнул в django, поэтому, вероятно, пора.

Codejoy 01.05.2018 18:52
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
5
209
0

Другие вопросы по теме