2012-01-22 13 views
13

django documentation, क्या हुआ अगर मैंप्रदर्शन क्षेत्र विकल्प मॉडल स्ट्रिंग नाम के हिस्से के रूप

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) 

था क्या होगा यदि मैं पूरा नाम (पुरुष या महिला) के रूप में प्रदर्शित करने के लिए __str परिभाषा चाहता था self.gender के लिए बजाय से एम या एफ का?

उत्तर

28

उपयोग get_gender_display():

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

ध्यान दें, आप अजगर का उपयोग नहीं कर रहे हैं 3+ आप __str__ से __unicode__ को परिभाषित किया जाना चाहिए न कि।

+1

क्या आप यूनिकोड और स्ट्र के बीच अंतर को समझा सकते हैं? और क्या मुझे उन्हें दोनों परिभाषित करना चाहिए? –

+5

और एक टेम्पलेट में, आप इसका उपयोग कर सकते हैं: '{{variable.get_fieldname_display}}' एचटीएच – jfunez

+0

पायथन 3 में आपको '__unicode__' की बजाय' __str__' को परिभाषित करना चाहिए। –

संबंधित मुद्दे