2015-06-29 2 views
0

Приложение Django 1.7.1 работает нормально. Но я хотел бы перейти на более новую версию 1.8.2. Я следую инструкциям here, которые в основном просто говорят, чтобы сделать pip install -U Django из моей виртуальной среды.Обновление с Django 1.7.1 до 1.8.2 сбой

После того, как я сделаю эту линию, я немедленно попытаюсь сделать manage.py, и он не работает, как показано ниже.

Может кто-нибудь предложить мне, что я должен сделать, чтобы исправить это? Ошибки ниже выглядят так, как будто они имеют отношение к модулю MPTT. (Я запускаю версию 0.6.1 MPTT). Обновление до более новой версии django-mptt также имеет свой собственный набор грязных головных болей.

(myVirtualEnv) $ ./manage.py 
myVirtualEnv/src/django-cache-machine-origin/caching/invalidation.py:21: RemovedInDjango19Warning: 'get_cache' is deprecated in favor of 'caches'. 
    cache = get_cache('cache_machine') 

myVirtualEnv/lib/python2.7/site-packages/mptt/forms.py:7: RemovedInDjango19Warning: The django.forms.util module has been renamed. Use django.forms.utils instead. 
    from django.forms.util import ErrorList 

Traceback (most recent call last): 
    File "./manage.py", line 10, in <module> 
    execute_from_command_line(sys.argv) 
    File "myVirtualEnv/lib/python2.7/site-packages/django/core/management/__init__.py", line 338, in  execute_from_command_line 
    utility.execute() 
    File "myVirtualEnv/lib/python2.7/site-packages/django/core/management/__init__.py", line 312, in execute 
    django.setup() 
    File "myVirtualEnv/lib/python2.7/site-packages/django/__init__.py", line 18, in setup 
    apps.populate(settings.INSTALLED_APPS) 
    File "myVirtualEnv/lib/python2.7/site-packages/django/apps/registry.py", line 108, in populate 
    app_config.import_models(all_models) 
    File "myVirtualEnv/lib/python2.7/site-packages/django/apps/config.py", line 198, in import_models 
    self.models_module = import_module(models_module_name) 
    File "/usr/local/Cellar/python/2.7.8_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module 
    __import__(name) 
    File "myProject/myApp1/models.py", line 5, in <module> 
    from categories.models import Category 
    File "myProject/myApp2/models.py", line 22, in <module> 
    class Category(CachingMixin, MPTTModel): 
    File "myVirtualEnv/lib/python2.7/site-packages/mptt/models.py", line 244, in __new__ 
    cls = meta.register(cls) 
    File "myVirtualEnv/lib/python2.7/site-packages/mptt/models.py", line 338, in register 
    tree_manager.init_from_model(cls) 
    File "myVirtualEnv/lib/python2.7/site-packages/mptt/managers.py", line 52, in init_from_model 
    [tree_field] = [fld for fld in model._meta.get_fields_with_model() if fld[0].name == self.tree_id_attr] 
    File "myVirtualEnv/lib/python2.7/site-packages/django/db/models/options.py", line 56, in wrapper 
    return fn(*args, **kwargs) 
    File "myVirtualEnv/lib/python2.7/site-packages/django/db/models/options.py", line 432, in get_fields_with_model 
    return [self._map_model(f) for f in self.get_fields()] 
    File "myVirtualEnv/lib/python2.7/site-packages/django/db/models/options.py", line 740, in get_fields 
    return self._get_fields(include_parents=include_parents, include_hidden=include_hidden) 
    File "myVirtualEnv/lib/python2.7/site-packages/django/db/models/options.py", line 802, in _get_fields 
    all_fields = self._relation_tree 
    File "myVirtualEnv/lib/python2.7/site-packages/django/utils/functional.py", line 60, in __get__ 
    res = instance.__dict__[self.name] = self.func(instance) 
    File "myVirtualEnv/lib/python2.7/site-packages/django/db/models/options.py", line 709, in _relation_tree 
    return self._populate_directed_relation_graph() 
    File "myVirtualEnv/lib/python2.7/site-packages/django/db/models/options.py", line 681, in  _populate_directed_relation_graph 
    all_models = self.apps.get_models(include_auto_created=True) 
    File "myVirtualEnv/lib/python2.7/site-packages/django/utils/lru_cache.py", line 101, in wrapper 
    result = user_function(*args, **kwds) 
    File "myVirtualEnv/lib/python2.7/site-packages/django/apps/registry.py", line 168, in get_models 
    self.check_models_ready() 
    File "myVirtualEnv/lib/python2.7/site-packages/django/apps/registry.py", line 131, in check_models_ready 
    raise AppRegistryNotReady("Models aren't loaded yet.") 
django.core.exceptions.AppRegistryNotReady: Models aren't loaded yet. 

ответ

2

Ненавижу быть носителем плохих новостей, но вы столкнулись с чем-то, что является одним из самых адских битков разработки с Django: попытка получить все ваши зависимости в правильной версии для работы друг с другом. Это не редкость, когда определенная версия зависимости зависит от конкретных версий Django.

mptt не поддерживает Django 1.8 до версии 0.70 (см. Примечания об обновлении: http://django-mptt.github.io/django-mptt/upgrade.html). Поэтому, если вы хотите Django 1.8, вам нужно сначала обновить mptt. Сожалею.

1

У меня нет достаточно привилегий комментировать, но вы можете попробовать, если ответ от this post помогает вашей проблеме.

Смежные вопросы