我有一个Django站点,其中Item
对象具有布尔属性active
。我想做这样的事情来将属性从False切换到True,反之亦然:
def toggle_active(item_id):
item = Item.objects.get(id=item_id)
item.active = !item.active
item.save()
此语法在许多基于C的语言中有效,但在Python中似乎无效。是否有其他方法可以在不使用的情况下执行此操作:
if item.active:
item.active = False
else:
item.active = True
item.save()
本机python neg()
方法似乎返回整数的否定,而不是布尔值的否定。
感谢您的帮助。
答案 0 :(得分:128)
你可以这样做:
item.active = not item.active
应该这样做:)
答案 1 :(得分:13)
我想你想要
item.active = not item.active
答案 2 :(得分:12)
item.active = not item.active
是pythonic方式
答案 3 :(得分:10)
另一种(少于简明可读,更多算术)的方法是:
item.active = bool(1 - item.active)
答案 4 :(得分:6)
布尔值的否定是not
。
def toggle_active(item_id):
item = Item.objects.get(id=item_id)
item.active = not item.active
item.save()
谢谢大家,这是一个快速反应!
答案 5 :(得分:5)
简单易行:
item.active = not item.active
所以,最后你最终会得到:
def toggleActive(item_id):
item = Item.objects.get(id=item_id)
item.active = not item.active
item.save()