如何检查Django中是否存在模型名称?

Use*_*ame 4 django django-models

我必须使用什么Django命令来检查模型是否SomeModelName存在?

Wil*_*sem 7

Django有django.apps一个apps类的模块:

from django.apps import apps
Run Code Online (Sandbox Code Playgroud)

这个apps类有一个get_models()函数,它返回Model类(这些类不包括抽象模型,而ManyToManyFields 作为结果的表).

我们可以.__name__用来获取类名.所以我们可以检查是否SomeModelName存在:

from operator import attrgetter

'SomeModelName' in map(attrgetter('__name__'), apps.get_models())
Run Code Online (Sandbox Code Playgroud)

请注意,这将指定类的名称,并且在您注册的不同应用程序中,多个模型可以具有相同的名称(但这些不是相同的模型).

  • 或者:`apps.get_model(my_app_label,model_name)`.如果model_name不存在,则引发`LookupError`. (3认同)