我是Django和Python的新手,最近遇到了Django文檔中的一些方法,比如Model.get_FOO_display()。幫助頁面表示您可以用FOO代替字段的名稱。我一直在試圖弄清楚Python在Python中是如何實現的,並且研究了'Model'類的源碼。 在那裏,我遇到了這個:get_FIELD_display(在django中)如何工作?
def _get_FIELD_display(self, field):
value = getattr(self, field.attname)
return force_unicode(dict(field.flatchoices).get(value, value), strings_only=True)
我不明白它是如何可能的Python: 1)所以寫這個
class Person(models.Model):
gender = models.CharField(max_length=1, choices=GENDER_CHOICES)
p = Person(name='John', gender='M')
p.get_gender_display()
,Python是怎樣「變」字段(或FOO)轉換爲性別?它是某種Python'邪惡'的符號嗎? (對不起,我不能更清楚地問)你是否指向Python手冊頁?
2)爲什麼來自Model類的源聲明_get_FIELD_display()帶有前導下劃線,但是上面的Python文檔提取沒有下劃線寫入「p.get_gender_display()」?再說一次,你可以給一個Python手冊頁嗎?