Python _uuinit_uu.py中的自定义函数导致Django应用程序不';尚未安装错误

Python _uuinit_uu.py中的自定义函数导致Django应用程序不';尚未安装错误,python,django,Python,Django,我有如下设置 Tasks |__ __init__.py |__ a.py |__ b.py |__ c.py ... 在_uinit__u.py文件中 from .a import custom1, custom2 from .b import custom3, custom4 我在Tasks中编写了一个函数,要求将Tasks添加为已安装的应用程序 但是,自定义函数会引发django.core.exc

我有如下设置

    Tasks
      |__ __init__.py
      |__ a.py
      |__ b.py
      |__ c.py
         ...
在_uinit__u.py文件中

    from .a import custom1, custom2
    from .b import custom3, custom4
我在Tasks中编写了一个函数,要求将Tasks添加为已安装的应用程序

但是,自定义函数会引发django.core.exceptions.AppRegistryNotReady:“应用程序尚未加载。”

回溯会导致一个自定义函数尝试导入的点

从django.contrib.auth.models导入用户


为什么会发生这种情况?有没有一种方法可以在不将自定义函数移出uuu init uuuu.py文件的情况下修复此错误?

Django初始化的顺序很好

1.)首先Django导入已安装应用程序中的每个项目

在此阶段,您的代码不应导入任何模型

3.)最后,Django运行每个应用程序配置的
ready()
方法

进一步如
AppConfig.ready()

子类可以重写此方法以执行初始化任务 例如记录信号。注册一完成就调用它 人满为患

class RockNRollConfig(AppConfig):
# ...

    def ready(self):
        # importing model classes
        from .models import MyModel  # or...
        MyModel = self.get_model('MyModel')

        # registering signals with the model's string label
        pre_save.connect(receiver, sender='app_label.MyModel')

您可以考虑使用函数的内部来代替导入代码< >要求准备> <代码> false


但是我不确定它是否会根据您的用例工作

您能分享完整的回溯吗?当您试图在加载模型之前访问模型时,通常会发生此错误。此函数的作用是什么?您可能希望改用AppConfig和import in ready方法。但是这信息太少,无法理解您到底在导入什么完整的回溯导致某些函数试图使用django.auth用户模型,但我不确定django初始化的顺序是什么阻止了这种情况的发生..将回溯添加到问题中,在加载所有应用程序之前,您正在使用模型执行某些操作