AppRegistryNotReady(“Apps aren’t loaded yet.”)
Django的初始化加载顺序是:
应用程序注册表分三个阶段初始化。在每个阶段,Django按顺序处理所有应用程序INSTALLED_APPS。
第一个Django导入每个项目INSTALLED_APPS。
如果它是应用程序配置类,Django将导入由其name属性定义的应用程序的根包。如果它是一个Python包,Django会创建一个默认的应用程序配置。
在此阶段,您的代码不应导入任何模型!(我的bug原因就是这个)
换句话说,应用程序的根包和定义应用程序配置类的模块不应该间接导入任何模型。
严格来说,Django允许在加载应用程序配置后导入模型。但是,为了避免对顺序进行不必要的约束INSTALLED_APPS,强烈建议不要在此阶段导入任何模型。
一旦此阶段完成,就可以在应用程序配置上运行的API get_app_config()变得可用。
然后Django尝试导入models每个应用程序的子模块(如果有的话)。
你必须定义或导入全系车型在您的应用程序models.py或 models/init.py。否则,此时应用程序注册表可能未完全填充,这可能导致ORM出现故障。
一旦这个阶段完成,那些在模型上运行的API就 get_model()变得可用了。
最后,Django运行ready()每个应用程序配置的方法。
详情:
https://docs.djangoproject.com/en/1.9/ref/applications/#how-applications-are-loaded