4
我編了一個模板來顯示所有從模型中的字段和值的顯示顯示值,它看起來像這樣:的Django的DetailView模板的所有領域
## detail_template.html ##
{% for name, value in object.get_fields %}
<p>
<label>{% trans name %}:</label>
<span>{{ value|default:"Not available" }}</span>
</p>
{% endfor %}
在課堂上,你可以看到聲明的get_fields功能:
## models.py ##
Class Object:
...many fields...
def get_fields(self):
return [(field.verbose_name, field._get_val_from_obj(self)) for field in self.__class__._meta.fields]
的問題是,當我有,例如CharField與選擇,如:
## models.py ##
GENDER_CHOICES = (
('M', 'Male'),
('F', 'Female'),
)
...all other fields ...
sex = models.CharField(verbose_name=u"Sex", max_length=1, choices=GENDER_CHOICES)
它顯示的M或F,我想要做的是加載所有領域的get_NAMEFIELD_display而無需手動做的所有領域:
<p>
<label>{% trans 'Sex' %}:</label>
<span>{{ object.get_sex_display|default:"Not available" }}</span>
</p>
我有一個線索:Django的管理員的Contrib這是否上市對象時,所以我肯定有一個通用的方式做到這一點,我也很感激任何幫助。
我看,我試過..它調用所有的get_field_displays,但現在所有其他沒有該函數的字段沒有返回get_val_from_obj =( 我需要知道它給出的異常時沒有get_field_display – StaticX 2012-04-06 15:24:42
運行Python外殼,檢索對象,並嘗試調用'obj._get_FIELD_display(「some_non_existent_field」)' - 你會得到異常 – ilvar 2012-04-07 00:04:33
沒有必要添加其他方法,它提出了也不例外。如果你打電話。 self._get_FIELD_display(場)如果返回即使沒有get_field_display方法的值=) – StaticX 2012-04-07 17:06:58