Les modèles Django

1. A propos des modèles django

Afin de structurer et organiser la gestion des données dans votre application, Django met à votre disposition un outil appelé "modèle Django" (Django model).

  1. Les modèles sont des classes : qui définissent les noms des tables et des champs (attributs) pour stocker les données.
  2. Chaque modèle est associé à une table unique : dans la base de données.
  3. Chaque modèle est une classe Python : qui hérite de la classe django.db.models.Model.
  4. Chaque attribut du modèle : représente un champ dans la base de données.

2. Divers Types de Champs dans un Modèle Django

Un modèle Django propose une gamme variée de types de champs pour la modélisation des données :

  1. AutoField : Un champ entier qui s'incrémente automatiquement.
  2. BigAutoField : Un entier sur 64 bits, similaire à AutoField, mais capable de contenir des nombres de 1 à 9223372036854775807.
  3. BigIntegerField : Un entier sur 64 bits, similaire à IntegerField, mais avec une plage garantie de -9223372036854775808 à 9223372036854775807.
  4. BinaryField : Un champ destiné au stockage de données binaires brutes.
  5. BooleanField : Un champ représentant une valeur vraie/fausse. Le widget de formulaire par défaut est une case à cocher (CheckboxInput).
  6. CharField : Un champ de texte conçu pour stocker de courtes chaînes de caractères.
  7. DateTimeField : Un champ représentant une date, avec une instance Python sous forme de datetime.date.
  8. DecimalField : Un champ pour les nombres décimaux à précision fixe, représentés par une instance Python de Decimal.
  9. DurationField : Un champ pour stocker des périodes de temps.
  10. EmailField : Un CharField vérifiant que la valeur est une adresse e-mail valide.
  11. FileField : Un champ pour télécharger des fichiers.
  12. FloatField : Un champ pour les nombres à virgule flottante, avec une instance Python sous forme de flottant.
  13. ImageField : Héritant de tous les attributs et méthodes de FileField, mais exigeant que l'objet téléchargé soit une image valide.
  14. IntegerField : Un champ pour les entiers, avec une plage sûre de -2147483648 à 2147483647 dans toutes les bases de données prises en charge par Django.
  15. NullBooleanField : Similaire à BooleanField, mais autorisant NULL comme option.
  16. PositiveIntegerField : Comme IntegerField, mais ne permettant que des valeurs positives ou nulles (0). La plage sûre est de 0 à 2147483647 dans toutes les bases de données prises en charge par Django.
  17. SmallIntegerField : Comme IntegerField, mais limité à des valeurs en dessous d'un certain point, dépendant de la base de données.
  18. TextField : Un champ de texte étendu. Le widget de formulaire par défaut est une zone de texte.
  19. TimeField : Un champ représentant l'heure, avec une instance Python sous forme de datetime.time.




3. Création d'un modèle Django

Pour bien apprécier et saisir la notion de modèl django, nous allons la traiter dans un exemple d'une simple application django, soit à titre d'exemple une application 'studentApp' qui sera destinée à la gestion des étudiant:
Avant de se lancer dans la création d'un modèle au sein d'un projet django, il faut au préalable enregistrer votre application:

Ajoutez votre app au fichier mysite/settings.py:

En voici un exemple de modèle nommé 'Student' permettant de représenter et personnaliser les étudiants possédant les champs :

  1. name : champ destiné à recevoir le nom de l'étudiant
  2. email : champ destiné à recevoir l'email de l'étudiant
  3. phone : numéro de téléphone de l'étudiant
  4. section : section de l'étudiant: Math, SVT, Info...

Pour créer ce modèle, il suffit d'ajouter le code suivant au fichier studentApp/models.py

Ceux-ci créera une table SQLite formée des champs : name, email, phone, section
Mais pas avant que les migrations nécessaires soient crées:

A ce effet, exécuter en ligne de commande:

et ensuite :

4. Ajouter le modèle à la zone admin

Afin de pouvoir gérer le modèle 'Student' qu'on vient de créer il est donc nécessaire de le charger dans la zone admin du site. A cet effet, il suffit d'ajouter au fichier studentApp/admin.py les lignes de codes:

Si on accède maintenant à la zone admin de notre projet django, on va trouver la rubrique 'Students', qui nous donne la possibilité d'ajouter, d'éditer et de supprimer un enregistrement:

django model admin

5. Amélioration de l'affichage au niveau de la zone admin

Nous avons maintenant la possibilité d'améliorer la présentation des enregistrements dans la zone d'administration en affichant une liste des noms, des e-mails, des sections, etc. Pour ce faire, nous importons le module admin depuis django.contrib dans le fichier models.py :

Ensuite, nous créons une classe au sein du fichier models.py qui hérite de la classe admin.ModelAdmin. Cette classe permet de spécifier les attributs à afficher et les critères de filtrage pour les enregistrements :

Voici le code final du fichier models.py

Il nous reste maintenant juste quelques modifications au niveau du fichiers admin.py au sein duquel on doit importer et enregistrer la classe StudentsAdmin qu'on vient de créer:

En accédant maintenant à la zone admin de notre projet django on s'aperçoit qu'il y a effectivement amélioration de l'affichage des résultats faisant apparaitre la liste des noms, des emails, des sections...

Les modèles de django -model admin



 

Younes Derfoufi
CRMEF OUJDA

Leave a Reply