Django在模板中得到CHOICES形式

时间:2012-12-15 00:57:40

标签: django django-templates

嗨,我有一个Django表格:

BAR_CHOICES = (
    ('1', 'Cheers'),
    ('2', 'The Blue Oyster'),
    ...
)

class ProjectInfoForm(forms.Form):
    foo = forms.ChoiceField(
        CHOICES = BAR_CHOICES,
    )
    ...

当然,当我将此数据保存到模型时,值将作为整数存储在db中。现在,当我从保存的数据中获取这些值时,它们就是整数。获取与之关联的选择字符串的最佳方法是什么。我应该将BAR_CHOICES导入模板吗?

2 个答案:

答案 0 :(得分:7)

Django提供了一种直接获取相关字符串的方法。看看here

<强>更新

示例:

BAR_CHOICES = (
    ('1', 'Cheers'),
    ('2', 'The Blue Oyster'),
    ...
)

class Project(models.Model):
   foo = models.PositiveIntegerField(choices=BAR_CHOICES)
   ...

在模板中,您只需执行{{project.get_foo_display}}

即可

答案 1 :(得分:2)

如果要在模板中呈现选项,可以迭代form.field.choices

如果您想要在模板中使用所选值的字符串表示,那么您将不得不在视图或表单中编写可以获取该信息的内容。

您可以在表单中模仿get_FOO_display ..

def get_foo_display(self):
    return dict(BAR_CHOICES)[self.foo]