我的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
为什么这不适用于整数而只适用于字符串?感谢
答案 0 :(得分:2)
如果要将值存储为数据库中的整数,则需要交换所选元组的顺序。
CHOICES = (
(0, "Lead"),
(1, "Contact")
)
通过此更改,object.choice
将为0
或1
,您可以使用{{ object.get_choice_display }}
在Lead
中显示Contact
或class 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))
);
模板。