Template Tag pour Django extended choices

Publié le 11 septembre 2011 par Samuel Martin

Voici un simple tag à copier coller dans votre projet afin d'utiliser très simplement "extended choices" côté template. Cet article est un complément de Django Extented Choices.

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