Django:获取应用程序的所有模型(包括摘要)
该方法不返回抽象模型类Django:获取应用程序的所有模型(包括摘要),django,django-models,Django,Django Models,该方法不返回抽象模型类 有没有一种方法可以获取一个应用程序的所有模型类(包括抽象模型)?我们可以实现自己的方法,基本上在类层次结构中向下走,并使用给定的应用程序标签“收获”所有模型 from django.db.models import Model def get_app_models(app_label): result = set() generation = {Model} while generation: generation = {sc f
有没有一种方法可以获取一个应用程序的所有模型类(包括抽象模型)?我们可以实现自己的方法,基本上在类层次结构中向下走,并使用给定的
应用程序标签“收获”所有模型
from django.db.models import Model
def get_app_models(app_label):
result = set()
generation = {Model}
while generation:
generation = {sc for c in generation for sc in c.__subclasses__()}
result.update([c for c in generation if c._meta.app_label == app_label])
return list(result)
因此,我们从Model
向下移动,每次计算generation
中的下一代Model
类。因为世代是有限的,我们知道我们最终会停止
同时,在每一代中,我们通过检查c.\u meta.app\u标签
是否与给定的app\u标签
相同来“收获”属于给定应用程序的模型
对于get\u app\u models('someapp')
,它返回一个没有特定顺序的列表,其中包含属于someapp
的所有模型