的詳細的版本我有一個模型:Django模板:選擇
from django.db import models
CHOICES = (
('s', 'Glorious spam'),
('e', 'Fabulous eggs'),
)
class MealOrder(models.Model):
meal = models.CharField(max_length=8, choices=CHOICES)
我有一個表格:
from django.forms import ModelForm
class MealOrderForm(ModelForm):
class Meta:
model = MealOrder
而且我想用formtools.preview。默認模板打印選擇(而不是「神話般的蛋」的「e」)的短版,原因是其使用
{% for field in form %}
<tr>
<th>{{ field.label }}:</th>
<td>{{ field.data }}</td>
</tr>
{% endfor %}.
我想一個模板作爲一般的提及,但打印「神話般的蛋'而是。
[我不得不懷疑其中的真正的問題,我粗體它爲我們所有的:)]
我知道怎麼去選擇的詳細的版本的方式,本身是醜陋的:
{{ form.meal.field.choices.1.1 }}
真正的痛苦是我需要選擇的選擇,並且來我心中的唯一方法是通過選擇迭代和檢查{% ifequals currentChoice.0 choiceField.data %}
,這甚至醜陋。
它可以輕鬆完成嗎?或者它需要一些模板標籤編程?不應該在django中可用嗎?
是的,我知道。它不是普通的(通用的),但是 - 除非你知道在模板對象的所有get_FOO_display方法中遍歷模板的方法:)對於編寫非通用模板,我有點太懶惰;) 此外,文檔說這是一個模型實例的方法。因此,它必須是一個綁定到現有對象的模型形式,而不是這種情況,也不是一般的。 – 2009-07-09 22:40:48
我一直在忘記這一個 – Sevenearths 2011-09-23 09:55:26
請注意,這個用法不限於視圖,get_FOO_display()是模型對象本身的一個方法,所以您也可以在模型代碼中使用它!例如,在__unicode __()中,非常方便 – Bogatyr 2014-02-27 17:13:40