2012-01-22 41 views
13

Từ django documentation, những gì nếu tôi cóhiển thị như một phần của tên chuỗi mô hình

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) 

gì nếu tôi muốn định nghĩa __str để hiển thị như tên đầy đủ (Nam hoặc Nữ) cho self.gender thay của M hoặc F?

Trả lời

28

Sử dụng get_gender_display():

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

Lưu ý, nếu bạn không sử dụng Python 3+ bạn nên xác định __unicode__ hơn __str__.

+1

bạn có thể giải thích sự khác biệt giữa unicode và str không? Và tôi có nên định nghĩa cả hai? –

+5

và trong một mẫu, bạn có thể sử dụng: '{{variable.get_fieldname_display}}' HTH – jfunez

+0

Trong Python 3, bạn nên xác định '__str__' thay vì' __unicode__'. –

Các vấn đề liên quan