的详细的版本我有一个模型: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