【问题标题】:Upgrading from Django 1.7.1 to 1.8.2 fails从 Django 1.7.1 升级到 1.8.2 失败
【发布时间】:2015-09-15 10:06:12
【问题描述】:

我的 Django 1.7.1 应用程序运行良好。但我想升级到更新的版本 1.8.2。我按照here 的说明进行操作,基本上只是说在我的虚拟环境中执行pip install -U Django

虽然我做了那行之后,我立即尝试做manage.py,但它失败了,如下所示。

有人可以向我建议我应该做些什么来解决这个问题吗?下面的错误看起来与 MPTT 模块有关。 (我正在运行 MPTT 的 0.6.1 版)。升级到较新版本的 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.

【问题讨论】:

    标签: python django upgrade django-mptt


    【解决方案1】:

    我讨厌成为坏消息的承担者,但是您遇到了使用 Django 进行开发时最可怕的事情之一:尝试将所有依赖项都放到正确的版本以相互协作。特定版本的依赖项依赖于特定版本的 Django 并不少见。

    mptt 在 0.70 版之前不支持 Django 1.8(请参阅升级说明:http://django-mptt.github.io/django-mptt/upgrade.html)。所以如果你想要 Django 1.8,你必须先升级 mptt。对不起。

    【讨论】:

      【解决方案2】:

      我没有足够的权限发表评论,但如果this post 的回答对您的问题有帮助,您可以尝试。

      【讨论】:

        猜你喜欢
        • 2015-01-07
        • 2016-10-10
        • 1970-01-01
        • 1970-01-01
        • 2016-02-06
        • 1970-01-01
        • 1970-01-01
        • 2017-03-14
        • 2017-12-02
        相关资源
        最近更新 更多