モデルのすべてのフィールドと値を表示するテンプレートを作成しました。次のようになります。
## 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 Adminはオブジェクトをリストするときにそれを行うので、それを行う一般的な方法があると確信しており、助けていただければ幸いです.