Django:我如何findORM知道的模型列表?

在Django中,有没有一个地方可以findORM知道的模型?

简单的scheme:

import django.apps django.apps.apps.get_models() 

在Django 1.7之前,改为使用:

 from django.db import models models.get_models(include_auto_created=True) 

include_auto_created参数可确保通过ManyToManyField隐式创build的表也将被检索。

使用http://docs.djangoproject.com/en/dev/ref/contrib/contenttypes/列出模型;

 from django.contrib.contenttypes.models import ContentType for ct in ContentType.objects.all(): m = ct.model_class() print "%s.%s\t%d" % (m.__module__, m.__name__, m._default_manager.count()) 

如果你想玩,而不是使用好的解决scheme ,你可以玩一下python自省:

 import settings from django.db import models for app in settings.INSTALLED_APPS: models_name = app + ".models" try: models_module = __import__(models_name, fromlist=["models"]) attributes = dir(models_module) for attr in attributes: try: attrib = models_module.__getattribute__(attr) if issubclass(attrib, models.Model) and attrib.__module__== models_name: print "%s.%s" % (models_name, attr) except TypeError, e: pass except ImportError, e: pass 

注意:这是相当粗糙的一段代码; 它将假定所有模型都在“models.py”中定义,并且它们从django.db.models.Modelinheritance。

如果您使用contenttypes应用程序,则很简单: http ://docs.djangoproject.com/en/dev/ref/contrib/contenttypes/

如果您使用pipe理员应用程序注册模型,则可以在pipe理文档中查看这些类的所有属性。