我有模板变量,可以将{{ myclass.myvariable }}正确地显示为1或0。
但是,当我在if语句{% if myclass.myvariable %}中使用它们时,它们总是被认为是True,即使值为0。
变量在我的模型中是一个字符的charfield choices,存储为0或1,django模板系统第4章声称:
‘在Python中,空列表([])、tuple (())、字典({})、字符串('')、零(0)和特殊对象None在布尔上下文中都是False。其他一切都是真的。“
我没有在模型中使用BooleanField,因为我还有选择值2、3、4.
这里有什么问题?
发布于 2011-08-03 10:41:49
因为'0' (字符串)不是0 (整数)。'0'是非零长度的字符串,这意味着它是布尔上下文中的True .如果存储整数,则应该使用IntegerField或PositiveIntegerField,而不是CharField。
发布于 2011-08-03 10:42:01
它们被视为字符串('0'字符串和'1'字符串,而不是0整数和1整数)。
如果您转到您的命令行Python并调用bool(0)或bool(False),您将得到False,但是如果您调用bool('0'),您将得到True。
https://stackoverflow.com/questions/6925150
复制相似问题