把我的应用程序移植到django 1.9,我吓坏了 django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet
基本上我的堆栈跟踪是:
manage.py execute_from_command_line(sys.argv) django/core/management:352, in execute_from_command_line utility.execute() django/core/management/__init__.py:326, in execute django.setup() django/__init__.py:18, in setup apps.populate(settings.INSTALLED_APPS) django/apps/registry.py:85, in populate app_config = AppConfig.create(entry) django/apps/config.py:90, in create module = import_module(entry) python2.7/importlib/__init__.py:37, in import_module __import__(name) myapp/mylib/__init__.py:52, infrom django.contrib.contenttypes.models import ContentType #<= The important part django/contrib/contenttypes/models.py:159, in class ContentType(models.Model): django/db/models/base.py:94, in __new__ app_config = apps.get_containing_app_config(module) django/apps/registry.p:239, in get_containing_app_config self.check_apps_ready() django/apps/registry.py:124, in check_apps_ready raise AppRegistryNotReady("Apps aren't loaded yet.") django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.
我的主要问题在这里:
我应该在__init__.py
我的django应用程序中导入我的模型吗?
它似乎触发了django.models.ModelBase
元类,在创建模型之前检查应用程序是否准备就绪.
我应该在
__init__.py
我的django应用程序中导入我的模型吗?
不,你一定不是在导入任何模式__init__.py
任何安装的应用程序的文件.这在1.9中已不再可能.
从发行说明:
所有模型都需要在已安装的应用程序中定义,或者声明一个显式的app_label.此外,在加载应用程序之前无法导入它们.特别是,无法在应用程序的根包中导入模型.