2012-01-22 20 views
13

Dal django documentation, che cosa se avessivisualizzazione come parte del nome del modello della stringa

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) 

E se volevo la definizione __str da visualizzare come il nome completo (maschio o femmina) per self.gender invece di M o F?

risposta

28

Uso get_gender_display():

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

nota, se non si sta usando Python 3+ si dovrebbe essere definendo __unicode__ piuttosto che __str__.

+1

puoi spiegare la differenza tra unicode e str? E dovrei definirli entrambi? –

+5

e in un modello, è possibile utilizzare: '{{variable.get_fieldname_display}}' HTH – jfunez

+0

In Python 3 si dovrebbe tuttavia definire '__str__' piuttosto che' __unicode__'. –

Problemi correlati