如警告中所述,将发生以下两种情况:
- 当你使用不在中的模型时INSTALLED_APPS;
- 或者在加载模型的应用程序之前使用模型。
由于你确实在INSTALLED_APPS
设置中引用了应用程序,因此很可能在应用程序初始化之前就使用了模型。
通常,当你有
from .models import SomeModels一个apps.py早期信号时(例如
post_migrate),就会发生这种情况。建议不要使用AppConfig.get_model()代替这里的经典方法。检查你的apps.py文件是否有任何模型导入,并使用此api替换它们。
例如代替:
# apps.pyfrom django.apps import AppConfigfrom .models import MyModeldef do_stuff(sender, **kwargs): MyModel.objects.get() # etc...class MyAppConfig(AppConfig): name = 'src.my_app_label' def ready(self): post_migrate.connect(do_stuff, sender=self)
做这个 :
# apps.pyfrom django.apps import AppConfigdef do_stuff(sender, **kwargs): mymodel = sender.get_model('MyModel') mymodel.objects.get() # etc...class MyAppConfig(AppConfig): name = 'src.my_app_label' def ready(self): post_migrate.connect(do_stuff, sender=self)请注意,此强制性是在Bug #21719中引入的。



