Django通过模型名称获取模型



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

作为Django的答案:从字符串中获取模型?显示,您需要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

  1. 获取所有模型
from django.apps import apps
apps.get_models()
  1. 按应用程序名称和型号名称获取型号
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')

此外,要了解型号名称

from your_app.models import your_model
your_model._meta.model_name

最新更新