Django:使用不在模板中工作的整数的元组选择

时间:2017-09-20 14:44:51

标签: python django

我的Django模型中有一些选择:

lead = 'Lead'
contact = 'Contact'
CHOICES = (
    (lead, 0),
    (contact, 1)
)

当使用if语句在模板中显示对象属性时,它不起作用(但不显示任何错误):

{% if object.choice == 0 %}
    {{ object.choice }} # This doesn't display anything
{% endif %}

但是,以下方法确实有效:

{% if object.choice == 'Lead' %}
    {{ object.choice }} # This works
{% endif %}

即使我切换选项(例如(lead, 'Lead')),也只有== 'Lead'有效而不是== 0

为什么这不适用于整数而只适用于字符串?感谢

1 个答案:

答案 0 :(得分:2)

如果要将值存储为数据库中的整数,则需要交换所选元组的顺序。

CHOICES = (
    (0, "Lead"),
    (1, "Contact")
)

通过此更改,object.choice将为01,您可以使用{{ object.get_choice_display }}Lead中显示Contactclass TestEnum { private final List<Enum> values; private final Function<String,Enum> parse; public TestEnum(List<Enum> v, Function<String,Enum> p) { values = v; parse = p; } public List<Enum> getValues() { return values; } public Function<String,Enum> getParse() { return parse; } } List<TestEnum> allEnums = Arrays.asList( new TestEnum(Arrays.asList(FileFormatCodeEnum.values()), s -> FileFormatCodeEnum.parse(s)) , new TestEnum(Arrays.asList(RoleTypeCodeEnum.values()), s -> RoleTypeCodeEnum.parse(s)) ); 模板。