有没有一种方法来否定返回到variables的布尔值?

我有一个Django站点,具有active的布尔属性的Item对象。 我想要做这样的事情从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()方法似乎返回一个整数的否定,而不是否定一个布尔值。

谢谢您的帮助。

你可以这样做:

item.active = not item.active

这应该够了吧 :)

我想你想要

 item.active = not item.active 

item.active = not item.activeitem.active = not item.active方式

另一种(不太简洁的可读性,更算术)的方法是:

 item.active = bool(1 - item.active) 

布尔的否定not

 def toggle_active(item_id): item = Item.objects.get(id=item_id) item.active = not item.active item.save() 

谢谢你,这是一个闪电般的快速反应!

它很简单:

 item.active = not item.active 

所以,最后你会最终:

 def toggleActive(item_id): item = Item.objects.get(id=item_id) item.active = not item.active item.save()