2012-01-22 11 views
13

Desde el django documentation, lo que si tuvieraDisplay campo de opción como parte del modelo de nombre de la cadena

GENDER_CHOICES = (
    ('M', 'Male'), 
    ('F', 'Female'), 
) 

class Person(models.Model): 
    name = models.CharField(max_length=20) 
    gender = models.CharField(max_length=1, choices=GENDER_CHOICES) 

    def __str__(self): 
      return "%s [%s]" % (self.name, self.gender) 

Lo que si quería la definición __str para mostrar como el nombre completo (masculino o femenino) para self.gender vez de M o F?

Respuesta

28

Uso get_gender_display():

return u"%s [%s]" % (self.name, self.get_gender_display()) 

Nota, si no estás usando Python 3+ usted debe estar definiendo __unicode__ en lugar de __str__.

+1

¿Puedes explicar la diferencia entre unicode y str? ¿Y debería definirlos a ambos? –

+5

y en una plantilla, puede usar: '{{variable.get_fieldname_display}}' HTH – jfunez

+0

En Python 3 usted debe definir '__str__' en lugar de' __unicode__' embargo. –

Cuestiones relacionadas