I was trying to use apps.get_model function. And, I want to use this without specifying the app name, is there any way to do that.
我指的是这个链接:django:get model from string?. 而且,我发现有一种方法可以通过使用apps.get-u模型来做到这一点。但是,在我的场景中,模型可以来自其他应用程序。所以,我不能在这里说出应用程序的名称。有什么办法吗?
如果您不关心模型来自哪个应用程序,可以按以下方式进行:
1 2 3 4 5 6 7 8 9 10 11 12 13 | from django.apps import apps def get_model_from_any_app(model_name): for app_config in apps.get_app_configs(): try: model = app_config.get_model(model_name) return model except LookupError: pass return None model = get_model_from_any_app('SomeModelName') |
但是在不同应用程序中的django模型可以有相同的名称,即你的项目可以在你的
因此,如果应用程序之间有重复的名称(也就是说,你可能不应该这样做,想想为什么你会想要一个半随机的模型),你就可以以这种方式结束。.
解释代码的文档:https://docs.djangoproject.com/en/2.0/ref/applications/django.apps.apps.get_app_配置https://docs.djangoproject.com/en/2.0/ref/applications/django.apps.appconfig.get_模型