У меня есть модель:
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' вместо 'Fabulous eggs'), потому что он использует
{% for field in form %}
<tr>
<th>{{ field.label }}:</th>
<td>{{ field.data }}</td>
</tr>
{% endfor %}.
Я хотел бы, чтобы шаблон был таким же общим, как упомянуто, но вместо этого печатал 'Fabulous eggs'.
[поскольку у меня были сомнения, где же настоящий вопрос, я выделил его для всех нас:)]
Я знаю, как получить подробную версию выбора таким образом, который сам по себе уродлив:
{{ form.meal.field.choices.1.1 }}
Настоящая боль в том, что мне нужно получить выбранный выбор, и единственный способ, который приходит мне в голову, - это перебирать варианты и проверять {% ifequals currentChoice.0 choiceField.data %}
, что еще страшнее.
Можно ли сделать это легко? Или нужно какое-то программирование тегов-шаблонов? Разве это уже не доступно в django?