Django 通过模型名称获取模型

moh*_*mad 2 django django-models python-3.x

我知道Django有一个且只有一个名为 name 的模型foo,但我不知道该模型注册的应用程序!我怎样才能得到模型model_name

shr*_*ilc 6

作为Django: Get model from string?的答案 显示,您需要字符串app_nameAppConfig对象才能从中获取模型model_name

但是,您可以使用它apps.get_app_configs()来迭代AppConfig实例,因此这样的事情是可能的:

from django.apps import apps

for app_conf in apps.get_app_configs():
    try:
        foo_model = app_conf.get_model('foo')
        break # stop as soon as it is found
    except LookupError:
        # no such model in this application
        pass
Run Code Online (Sandbox Code Playgroud)

请注意,此迭代将包括INSTALLED_APPS类似adminauthcontenttypessessions和中的基本 django 应用程序messagesstaticfiles