Simple tag
from pdn import constants
@register.simple_tag
def get_constant(constant, value, constant_type="CHOICES_DICT"):
try:
return getattr(getattr(constants, constant), constant_type)[int(value)]
except AttributeError:
return "NC"
Exemple de constates:
VISIBILITIES = Choices(
('PRIVATE', 0, _(u'Privé')),
('SHARED', 5, _(u'Partagé')),
('PUBLIC', 10, _(u'Public')),
)
Côté template
Ici company.visibility vaut 0
{% get_constant "VISIBILITIES" company.visibility %} -> Privé{% get_constant "VISIBILITIES" company.visibility "CHOICES_DICT" %} -> Privé{% get_constant "VISIBILITIES" company.visibility "VARNAME_DICT" %} PRIVATE
PS: Merci à Haypo et Sp4rKy pour la simplification d'écriture

3 réactions
1 De dom - 12/09/2011, 08:11
Pour l'affichage de la valeur dans un template, un simple suffit
2 De Samuel Martin - 12/09/2011, 22:22
Dom > get_visibility_display est une méthode définie par vos soins ? Si oui cela implique de définir N méthode pour N constante. Le template tag que je présente ici est générique, il fonctionne peu importe la constante (extended choices), peu importe le models.
3 De dom - 13/09/2011, 08:46
Non, c'est un template tag de base de django :
https://docs.djangoproject.com/en/d...
et extended_choices est compatible avec cette méthode