====== Les modèles avec Django ====== ===== Syntaxe ===== class NomClasse(models.Model): variable = models.Type(options) ==== exemple ==== issu de la [[https://docs.djangoproject.com/en/1.5/intro/tutorial01/|documentation officielle]] class Poll(models.Model): question = models.CharField(max_length=200) pub_date = models.DateTimeField('date published') ===== Visualiser le code SQL d'une application ===== python manage.py sql monApplication ===== Valider les modèles d'un projet ===== python manage.py validate ===== Afficher les directives de suppression de tables ===== permet de connaitre les ordres //DROP TABLE// appliqué par un modèle python manage.py sqlclear polls ===== Combinaison de commandes SQL ===== Combine les commandes //sql//, //sqlcustom// et //sqlindexes// python manage.py sqlall polls ===== Obtenir une représentation lisible d'un modèle ===== Ajouter une méthode //__unicode__// au modèle class NomClasse(models.Model): variable = models.Type(options) //... def __unicode__(self): return self.variable ==== exemple ==== class Poll(models.Model): question = models.CharField(max_length=200) pub_date = models.DateTimeField('date published') //... def __unicode__(self): return self.question ===== Personnaliser l'affichage d'un modèle dans l'interface d'admin ===== Par défaut une méthode utilisée dans l'interface d'administration utilise le nom de la méthode. il est possible de personnaliser cet affichage. Soit une méthode def uneMethodeQuiRenvoieUnBooleen(self): return resultatCalculBooleen Il suffit d'ajouter quelques lignes dans la classe de la méthode uneMethodeQuiRenvoieUnBooleen.boolean = True // Affichage d'un picto au lieu de True/False uneMethodeQuiRenvoieUnBooleen.short_description = 'Ma belle description courte' ==== Affichage d'un intitulé de champ personnalisé ==== L'interface d'administration s'appuie sur le [[https://docs.djangoproject.com/en/dev/topics/db/models/#verbose-field-names|verbose name d'un field]]. ===== filter vs get ===== //filter// renvoie un objet de type [[https://docs.djangoproject.com/en/dev/ref/models/querysets/|QuerySet]], get renvoie un objet tout court. Pour accéder aux attributs d'un objet, get est souvent la bonne manière p = Class.objects.get(FILTRE_A_APPLIQUER) p.attribut