django模板布尔变量显示为0但是被认为是真的.为什么?

0 python django variables templates

我有正确的模板变量可以显示{{ myclass.myvariable }}为1或0.

但是当我在if语句中使用它们时, {% if myclass.myvariable %}它们总是被认为是True,即使值为0.

变量choices在我的模型中是1个字符的字段,存储为0或1,django模板系统第4章声称:
'在Python中,空列表([]),元组(()),字典({} ),string(''),零(0)和特殊对象None在布尔上下文中为False.其他一切都是真的."

我没有BooleanField在模型中使用,因为我也有选择值2,3,4 ......

这可能是什么问题?

Cat*_*lus 6

因为'0'(字符串)不是0(整数).'0'是非零长度的字符串,这意味着它True在布尔上下文中.如果存储整数,则应使用IntegerFieldPositiveIntegerField不使用CharField.