Dans Django, y a-t-il un endroit où je peux obtenir une liste ou rechercher les modèles dont l'ORM a connaissance?Django: Comment puis-je trouver une liste de modèles que l'ORM connaît?
Répondre
Si vous utilisez l'application ContentTypes, il est simple: http://docs.djangoproject.com/en/dev/ref/contrib/contenttypes/
Si vous voulez jouer, et ne pas utiliser la good solution, vous pouvez jouer un peu avec l'introspection 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
Remarque : c'est un morceau de code assez grossier; il supposera que tous les modèles sont définis dans "models.py" et qu'ils héritent de django.db.models.Model.
solution simple:
import django.apps
django.apps.apps.get_models()
Avant Django 1.7, utiliser à la place:
from django.db import models
models.get_models(include_auto_created=True)
Le paramètre include_auto_created
assure que, grâce à des tables implicitement créées par ManyToManyField
s seront récupérés.
Si vous enregistrez vos modèles avec l'application d'administration, vous pouvez voir tous les attributs de ces classes dans la documentation d'administration.
Liste des modèles utilisant 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())
- 1. Modèles Django localisés
- 2. Est-ce que quelqu'un connaît une bonne liste de dates javascript préexistante?
- 3. django refactorisation des modèles
- 4. Est-ce que quelqu'un connaît une bonne source T3 (weblogic)?
- 5. Modèles Django "ifless", "ifgreater"
- 6. Django: débogage dans les modèles
- 7. Modèles D: trier une liste des types
- 8. Est-ce que quelqu'un connaît une liste opensource des messages d'erreur les plus courants?
- 9. Dans Django comment afficher une liste d'objets par année
- 10. Django Modèles absolue url - ce que je fais mal
- 11. Liste des modèles de conversion Log4net
- 12. modèles de filtrage avec l'héritage de Django
- 13. Django ORM: requête de deux modèles
- 14. Django héritage modèle, les modèles de filtrage
- 15. Modèles de groupe dans l'administrateur django
- 16. Conversion de fichiers jsp en modèles Django?
- 17. Django: récupérer des modèles dérivés de l'abstrait
- 18. Comment superposer une ligne pour un objet lm sur un nuage de points de ggplot2
- 19. comment mettre des commentaires dans les modèles de django
- 20. obtenir une liste de tous les modèles de rails
- 21. Comment trouver une liste de champs en double
- 22. En utilisant django, comment puis-je combiner deux requêtes de modèles séparés en une seule requête?
- 23. Comment lire une liste de diffusion en tant que RSS
- 24. Django Liste déroulante dynamique de la base de données
- 25. Comment trouver l'adresse mémoire d'un objet modèle Python/Django?
- 26. Comment écrire une vue Django pour obtenir CharFields de plusieurs modèles Django qui ne sont accessibles que par le biais des relations
- 27. Magasin django forms.MultipleChoiceField dans les modèles directement
- 28. modèles Django: la version verbeux d'un choix
- 29. Big domaine entier dans les modèles django
- 30. Problème avec l'encodage dans les modèles Django
En utilisant la même méthode que vous pouvez également obtenir tous les modèles dans une seule application: http://stackoverflow.com/a/8702854/117268 –
'de django.apps. apps import get_models' produit 'ImportError: Aucun module nommé 'django.apps.apps'' ... une idée? – allanberry
'à partir de django.apps importer apps' >>' apps.get_models' – Dingo