examples consultas avanzadas django django-models

consultas - Django: ¿Cómo puedo encontrar una lista de modelos que el ORM conoce?



consultas avanzadas en django (5)

En Django, ¿hay algún lugar donde pueda obtener una lista o buscar los modelos que el ORM conoce?



Si quieres jugar y no usar la buena solución , puedes jugar un poco con la introspección de 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

Nota: esta es una pieza bastante difícil de código; supondrá que todos los modelos están definidos en "models.py" y que heredan de django.db.models.Model.


Si registra sus modelos con la aplicación de administración, puede ver todos los atributos de estas clases en la documentación de administración.



Solución simple:

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

Antes de Django 1.7, en su lugar use:

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

El parámetro include_auto_created asegura que también se recuperarán las tablas creadas implícitamente por ManyToManyField s.