Spring is hate...

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 :
Animals

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 !
Animaux

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

Nickel, ça donne envie de faire du Django :-)
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

J'ai vraiment lu trop vite sorry :-(
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'

jpcw2002 : mais non, mais non, je les leaisse, juste pour montrer à quel point t'as pas lu jusqu'au bout ;)

29 Mars 2007 - 21:20, par Prax

C'est marrant comme un truc de geek sans aucun intérêt cela peut se réveler assez poétique finalement : un animal, des animaux. Je crois qu'il faudrait pousser un peu plus loin dans les règles spécifiques et carrément réinventer : un animal, des amis k'no, là ce n'est plus un truc de ggek mais quelque chose de novateur.

29 Mars 2007 - 22:17, par Prax

Tiens, j'ai continué par là bas pour ne pas troller :
http://cruditeetfleurbleue.blogspot.com/2007/03/baguette-pluriel.html

30 Mars 2007 - 09:49, par kNo'

Prax : un truc de geek sans aucun intérêt

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

Lapin !
J'ai gagné qqch ?

30 Mars 2007 - 14:39, par Prax

kNo' : tu as raison de reprendre ma brutalité. Je me dois donc de compléter : un truc de geek sans aucun intérêt pour les non geeks. Mais qui s'avère mignon cependant. Et que je ne regrette pas d'avoir lu jusqu'au bout, bien que je sois un vulgaire utilisateur de ces choses à clavier.

3 Avril 2007 - 22:14, par Lou

Dément !
Je fais ca dès demain !
Eviv Python !


Toutes les balises HTML seront supprimées.
Tu peux ajouter des liens comme suit :
J'ajoute [a http://exemple.com "un joli lien"]
Tu peux aussi mettre *en gras* ou {en italique}.