Académique Documents
Professionnel Documents
Culture Documents
TP3 Model
TP3 Model
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é.
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.
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