Pluriels
Dans Django, une des fonctionnalités les plus sympatoches, c'est la création d'une interface d'administration "clés en main", très complète, au design épuré et esthétique, et qui permet de faire les manipulations de base (ajout / modif / suppression) des données sans avoir à coder quoi que ce soit.
Pour ceux qui voudraient savoir comment qu'on fait, c'est chez le Biologeek qu'il faut aller.
C'est propre.
Mais j'avais un petit soucis avec une fonctionnalité apparemment voulue, mais qui m'est apparue bugguée au premier abord.
Bon, avant tout, initialisons une application dans mon projet :
$ python manage.py startapp menagerie
Fastoche. Je dispose maintenant d'un fichier prêt à abriter mes modèles :
class Animal(models.Model):
nom = models.CharField(maxlength=50)
class Admin:
pass
Rien qu'en créant ce modèle, je suis en train de définir une classe (Animal), qui a un nom. Et la sous-classe que je rajoute (Admin) permet à l'interface d'administration de rajouter automatiquement la possibilité de gérer les Animaux de ma ménagerie.
Il m'aura suffi de rajouter l'application dans le fichier settings.py (variable INSTALLED_APPS), puis de lancer la commande :
$ python manage.py syncdb
Et j'obtiens :
Animal au singulier, "Animals" au pluriel. Pas très sérieux, ça. Oui, en effet, l'interface de gestion permet d'administrer des listes d'objets, mais de là à généraliser le pluriel en "s"... Même en anglais, tous les mots n'ont pas de pluriel en "s" (ex : "story -> stories').
Mais c'est certes sympa d'avoir une gestion "automatique" du pluriel, mais ça a quand même ses limites.
Mais dans la série "Django pense à toi", je voudrais : LA SOUS-CLASSE META !
En rajoutant une classe dotée des attributs adéquats :class Animal(models.Model):
nom = models.CharField(maxlength=50)
class Admin:
pass
class Meta:
verbose_name_plural = "animaux"
Et badaboum !
C'est le top. J'imagine qu'il y a autant de formes plurielles que de langues, et l'internationalisation de l'interface automatique se fait réellement sans effort.
Le pied.
Merci qui ? Merci Harry Potter !
29 Mars 2007 - 13:02, par jpcw2002
Pour le pluriel, y' a ça dans la doc :
verbose_name_plural {
The plural name for the object:
verbose_name_plural = "stories"
If this isn’t given, Django will use verbose_name + "s".
}
@++
29 Mars 2007 - 13:08, par jpcw2002
N'hésites pas à virer le commentaire au dessus qui ne fait au final que répéter ce que t'as écrit au dessus.
@++
29 Mars 2007 - 14:27, par kNo'
29 Mars 2007 - 21:20, par Prax
29 Mars 2007 - 22:17, par Prax
http://cruditeetfleurbleue.blogspot.com/2007/03/baguette-pluriel.html
30 Mars 2007 - 09:49, par kNo'
Truc de geek, c'est sûr. "Sans intérêt", je ne pense pas. Les frameworks à la manière de Django permettent en quelques lignes de code de fabriquer les applis web extrêmement puissantes, sans effort apparent. C'est un véritable progrès.
En tout, mon programme fait moins d'une dizaine de lignes, et il me permet de gérer une collection "d'animaux" dans une base de données. En moins de 5 minutes, je pense qu'il y a peu d'outils qui permettent de faire ça.
30 Mars 2007 - 12:39, par Dia
J'ai gagné qqch ?
30 Mars 2007 - 14:39, par Prax
3 Avril 2007 - 22:14, par Lou
Je fais ca dès demain !
Eviv Python !