2011-05-25 4 views
5

trato de mostrar el nombre de una enumeración en el template.To ser claro, tengo enumeración como la clase de model.pycampos de enumeración traducidas en etiquetas de plantilla

class EmployerWorkerNumberRange(): 
R_0 = 0 
R_1_5 = 1 
R_6_15 = 2 
UNKNOWN = 3 

EMPLOYER_WORKER_NUMBER_RANGE =(
    (R_0,_("wnr_0")), 
    (R_1_5 ,_("wnr_1_5")), 
    (R_6_15,_("wnr_6_15")), 
    (UNKNOWN,_("UnknownWorkerNumberRange")), 
) 

Cuando lo uso en forma tal que

wnr = forms.ChoiceField(label=_("emp_full_reg_wnr"), required=True, choices=EmployerWorkerNumberRange.EMPLOYER_WORKER_NUMBER_RANGE)

funciona muy bien. (Llena el desplegable con los valores traducidos y cuando llego el elemento seleccionado se convierte sólo el id)

Mi pregunta es cómo puedo mostrar cualquier valor traducido en mi plantilla dando la identificación de la misma. Por ejemplo, me gustaría usarlo EmployerWorkerNumberRange.EMPLOYER_WORKER_NUMBER_RANGE[0]

¿Podría sugerirme de alguna manera?

Gracias

Respuesta

11

Para muestran legible desde de valor de campo, utilizan get_$var_display() método (creado automáticamente para todos los campos con choices) en la instancia de modelo. Por su ejemplo que es algo como esto:

{{ company.get_wnr_display }} 

para obtener el valor de índice sin instancia de modelo, la forma más fácil es escribir filtro personalizado que convertirá índice almacenado en una variable que se necesita valor:

{{ some_value|as_wnr_title }} 
+0

Se funciona perfecto, gracias! ¿Hay algún documento que pueda leer sobre tales cosas? He leído la documentación de django pero no he notado ese uso. – brsbilgic

+0

Todo está en la documentación de django, es posible que haya estado buscando secciones incorrectas. Este método particular está aquí: https://docs.djangoproject.com/en/1.3/ref/models/instances/ –

Cuestiones relacionadas