作为Django的答案:从字符串中获取模型?显示,您需要
在Django
中,我知道只有一个型号的名称为foo
,但我不知道该型号注册的应用程序!如何获得只有model_name
的型号?
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应用程序,如admin
、auth
、contenttypes
、sessions
、messages
和staticfiles
。
- 获取所有模型
from django.apps import apps
apps.get_models()
- 按应用程序名称和型号名称获取型号
from django.apps import apps
apps.get_model(app_label="your_app_label", model_name="your_model_name_in_lower_case")
- 模型也可以简单地获得
from django.apps import apps
apps.get_model('app_label.model_name')
此外,要了解型号名称
from your_app.models import your_model
your_model._meta.model_name