我有一个模特:
from django.db import models
CHOICES = (
('s', 'Glorious spam'),
('e', 'Fabulous eggs'),
)
class MealOrder(models.Model):
meal = models.CharField(max_length=8, choices=CHOICES)
Run Code Online (Sandbox Code Playgroud)
我有一个表格:
from django.forms import ModelForm
class MealOrderForm(ModelForm):
class Meta:
model = MealOrder
Run Code Online (Sandbox Code Playgroud)
我想使用formtools.preview.默认模板打印选择的短版本('e'而不是'Fabulous eggs'),因为它使用
{% for field in form %}
<tr>
<th>{{ field.label }}:</th>
<td>{{ field.data }}</td>
</tr>
{% endfor %}.
Run Code Online (Sandbox Code Playgroud)
我想要一个像上面提到的一般模板,但是打印'Fabulous eggs'代替.
[因为我怀疑真正的问题在哪里,我为所有人加粗了:)]
我知道如何以一种本身丑陋的方式获得一个选择的冗长版本:
{{ form.meal.field.choices.1.1 }}
Run Code Online (Sandbox Code Playgroud)
真正的痛苦是我需要得到所选择的选择,而我想到的唯一方法是迭代选择和检查{% ifequals currentChoice.0 choiceField.data %},这甚至更加丑陋.
可以轻松完成吗?或者它需要一些模板标签编程?难道这不应该在django中可用吗?
我有一个ChoiceField,现在如何在需要时获得"标签"?
class ContactForm(forms.Form):
reason = forms.ChoiceField(choices=[("feature", "A feature"),
("order", "An order")],
widget=forms.RadioSelect)
Run Code Online (Sandbox Code Playgroud)
form.cleaned_data["reason"] 只会给我"特色"或"订单"左右.
EMP_CHOICES = (
(0,'-- Select --'),
(1,'Good'),
(2,'Average'),
)
class EMPFeedback(models.Model):
user_choices = models.IntegerField(choices=EMP_CHOICES)
Run Code Online (Sandbox Code Playgroud)
如果存储在db中的值为1,则user_choices如何打印相应的user_choices对应的值(即1 == GOOD)
fb = EMPFeedback.objects.get(id=1)
print fb.user_choices # prints 1
print fb.user_choices.EMP_CHOICES
Run Code Online (Sandbox Code Playgroud) 我的models.py中有一个Choice字段
models.py
STATUS = (
('closed_issue', 'Closed Issue'),
('open_ssue', 'Open Issue'),
('pending', 'Pending'),
)
class Issue(models.Model):
name = models.CharField(max_length=45)
status = models.CharField(max_length=50, choices=STATUS)
Run Code Online (Sandbox Code Playgroud)
views.py
def Issues(resuest):
issues = Issue.objects.all()
Run Code Online (Sandbox Code Playgroud)
模板
{% for issue in issues %}
{{ issue.status }}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
输出
已发布问题
它显示选择字段的键而不是值
我希望这些值显示在模板中。有没有一种方法来获取值而不是键?
谢谢你的帮助。