Vous êtes sur la page 1sur 6

Django TP3

Définition du modèle de données de l'application LocalLibrary


Cette section est consacrée au démarrage de la définition de l'application LocalLibrary qui
permet de gérer une petite bibliothèque locale. Ouvrez le fichier models.py présent dans le
répertoire /locallibrary/catalog/. Le code par défaut est déjà en place au début du document et
permet d'importer les éléments du module models de django.

L'objet Genre
Cet objet est utilisé pour décrire et enregistrer le genre littéraire des livres — par
exemple une fiction, un polard ou un roman. Comme cela a été évoqué précédemment,
nous créons un modèle de données plutôt que de gérer cela à l'aide de texte libre ou de
codage en dur. Copiez le texte ci-dessous à la fin du fichier models.py.
L'objet, en relation avec la base de données, possède un seul attribut ( name) de type chaîne de
caractères (CharField), qui sera utilisé pour décrire le genre d'un livre (limité à 200 caractères).
Une option (help_text) permet d'utiliser une étiquettes d'aide dans les pages et formulaires du site
web. La méthode __str__(), qui retourne simplement le nom du genre littéraire de chaque
enregistrement. Puisque qu'il n'y a pas de nom vernaculaire ( verbose_name), le champ sera
simplement nommé Name dans les formulaires.

L'objet Book
Comme précédemment, vous pouvez copier le descriptif de l'objet Book à la fin du fichier
models.py. Cet objet représente un livre dans sa description et non une copie en rayon disponible
au prêt. Par conséquent, l'objet contient un titre et son identifiant international (isbn dont on
notera l'étiquette en majuscule pour ne pas avoir "Isbn" à la place) sous forme de chaînes de
caractère. De plus, l'objet contient un résumé sous forme d'une chaîne de caractère de longueur
non explicite pour traiter de résumés plus ou moins long.
De nouveaux types de champs sont utilisés :
 Le type UUIDField est utilisé pour traiter d'un identifiant unique de livre comme clé
primaire. Ce type de champ permet de générer un identifiant unique pour
enregistrer et suivre chacune des copies de chacun des livres.
 Le type DateField est utilisé pour enregistrer la date de retour d'un prêt. Ce champ
peut-être vide pour gérer le cas des livres dans les rayonnages c'est-à-dire
disponibles pour un prêt. Il est fait appel à la classe Meta pour permettre de
classer les requêtes sur les objet par date de retr
 our.
 Le champ status est un type connu (CharField) qui définit une liste de choix. Les
choix sont définis dans la description de l'objet par l'usage de tuples (une paire
clé-valeur) et transmis en option dans la déclaration du champs. Alors que
l'utilisateur manipulera les valeurs, les clés seront enregistrées dans la base de
données. Enfin, la valeur par défaut est la Maintenance car lorsqu'un ouvrage est
créé il n'est pas immédiatement disponible au prêt et n'est pas directement
positionné en rayon.

La méthode __str__() obligatoirement requise par Django pour manipuler les instances
d'objet et les enregistrements associés en base. Elle offre cependant la particularité
d'associer l'identifiant unique et le titre du livre qui lui est associé.

Note : Un aspect de Python:

 Si vous démarrez avec une version postérieure à la version 3.6, vous pouvez
utiliser le formatage des chaînes de caractère avec la fonction f-strings : f'{self.id}
({self.book.title})'.
 Dans les versions précédente ce formatage était réalisé de manière différente
utilisant la fonction de formatage format : '{0} ({1})'.format(self.id,self.book.title)).

L'objet Author
Terminons en copiant la description de l'objet Author à la fin du fichier models.py.
Désormais les notions manipulées pour définir cet objet vous sont connues. L'objet réprésente
un auteur par ses nom et prénoms ainsi que par ses dates de naissance et de décès (celles-ci
n'étant pas obligatoires). Deux méthodes permettent l'une d'accéder à l'objet de manière
compréhensible (__str__()) en retournant les nom et prénom de l'auteur dans cet ordre, et, l'autre
(get_absolute_url()) permettra de publier les informations propres à chaque auteur.

Appliquer les modifications en base


Les objets sont tous décrits dans le fichier dédié à la modélisation. Pour qu'elles soient
effectives, il est nécessaire d'exécuter les deux commandes python qui gèrent les
migrations de la base de données.
Défi — Introduire les langues
Faisons l'hypothèse qu'un donateur lègue à la bibliothèque des livres dont certains sont
écrits dans des langues étrangères comme le Farsi (langue majoritaire en Iran). Le défi
consiste donc à modéliser puis utiliser la meilleure représentation possible de ce
concept pour la bibliothèque.

Gardez en tête que :

 Une langue peut-être associée à plusieurs objets dont au moins Book, BookInstance
 Plusieurs types peuvent être utiliser pour modéliser une langue un objet, un champs, ou
explicitement dans le code à l'aide d'une liste de choix

Après avoir fait vos choix, modéliser le et ajouter les champs utiles. Vous pouvez ensuite
voir sur Github nous l'avons fait.

Une dernière chose... n'oubliez pas d'appliquer les modifications en base de données

Vous aimerez peut-être aussi