【问题标题】:python if evaluating True for False valuepython 如果评估 True 为 False 值
【发布时间】:2018-11-15 18:06:58
【问题描述】:

我有以下对象字段:

is_vendor = models.BooleanField(default=False)

我有以下 if 语句:

print(customer.is_vendor) //This prints False
if customer.is_vendor:
     print('im a vendor') //This prints even the value above is false

else:
     print('im not a vendor')

为什么会这样?

【问题讨论】:

  • 只是猜测(因此发表评论),models.BooleanField 是否实现了__bool__ 方法?当你运行bool(is_vendor) 时会发生什么?如果它没有隐含的真实值,您可能需要在if customer.is_vendor ==... 中明确说明,这只是一个有根据的猜测。
  • 您在该字段中有一个字符串。这对 django 来说很酷,但对 python 来说却不是。试试customer.is_vendor.to_python()

标签: python if-statement boolean


【解决方案1】:

您在字段中有一个字符串——“False”而不是 False。这对 Django 来说很酷,但对 python 来说却不是。请改用customer.is_vendor.to_python()。这将为您将其转换为布尔值。

if "False": print 'True!' # is True
if False: print 'True!'   # Nope.

if customer.is_vendor.to_python():
   print "Is a vendor!"

【讨论】:

猜你喜欢
  • 2015-03-15
  • 1970-01-01
  • 2018-08-17
  • 2015-03-22
  • 1970-01-01
  • 2023-03-29
  • 1970-01-01
  • 2019-04-24
  • 1970-01-01
相关资源
最近更新 更多