====== 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