ฉันมีโมเดล:
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 %}.
ฉันต้องการเทมเพลตทั่วไปตามที่กล่าวไว้ แต่พิมพ์ 'ไข่เยี่ยม' แทน
[ในขณะที่ฉันมีข้อสงสัยว่าคำถามที่แท้จริงอยู่ที่ไหนฉันจึงกล้าให้พวกเราทุกคน :)]
ฉันรู้วิธีรับตัวเลือกเวอร์ชัน verbose ในแบบที่น่าเกลียด:
{{ form.meal.field.choices.1.1 }}
ความเจ็บปวดที่แท้จริงคือฉันต้องได้รับตัวเลือกที่เลือกและวิธีเดียวที่จะมาถึงใจของฉันคือการทำซ้ำผ่านทางเลือกและการตรวจสอบ{% ifequals currentChoice.0 choiceField.data %}
ซึ่งมันน่าเกลียดกว่านั้น
สามารถทำได้ง่ายหรือไม่? หรือต้องการโปรแกรม template-tag? ไม่ควรมีอยู่ใน django แล้วหรือ