Django通过模型名称获取模型

hfyxw5xn  于 2023-04-07  发布在  Go
关注(0)|答案(2)|浏览(222)

Django中,我知道有且只有一个型号名称为foo,但我不知道该型号注册的应用程序!我如何获得只有model_name的型号?

5gfr0r5j

5gfr0r5j1#

正如Django: Get model from string?的答案所示,您需要app_name字符串或AppConfig对象来从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

请注意,此可迭代对象将包括INSTALLED_APPS中的基础django应用程序,如adminauthcontenttypessessionsmessagesstaticfiles

idfiyjo8

idfiyjo82#

1.获取所有模型。

from django.apps import apps
apps.get_models()

1.通过app name和model_name获取model。

from django.apps import apps
apps.get_model(app_label="your_app_label", model_name="your_model_name_in_lower_case")

1.模型也可以简单地得到。

from django.apps import apps
apps.get_model('app_label.model_name')

另外,要知道model_name

from your_app.models import your_model
your_model._meta.model_name

相关问题