首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django模板布尔变量显示为0,但符合True。为什么?

问django模板布尔变量显示为0,但符合True。为什么?
EN

Stack Overflow用户
提问于 2011-08-03 10:37:15
回答 2查看 2.2K关注 0票数 0

我有模板变量,可以将{{ 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.

这里有什么问题?

EN

回答 2

Stack Overflow用户

发布于 2011-08-03 10:41:49

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

票数 6
EN

Stack Overflow用户

发布于 2011-08-03 10:42:01

它们被视为字符串('0'字符串和'1'字符串,而不是0整数和1整数)。

如果您转到您的命令行Python并调用bool(0)或bool(False),您将得到False,但是如果您调用bool('0'),您将得到True。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6925150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档