Подтвердить что ты не робот

Есть ли способ свести на нет логическое значение, возвращаемое переменной?

У меня есть сайт 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(), кажется, возвращает отрицание целого числа, а не отрицание булева.

Спасибо за помощь.

4b9b3361

Ответ 1

Вы можете сделать это:

item.active = not item.active

Это должно сделать трюк:)

Ответ 2

Я думаю, что вы хотите

item.active = not item.active

Ответ 3

item.active = not item.active является питоническим способом

Ответ 4

Другой (менее сжатый читаемый, более арифметический) способ сделать это:

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

Ответ 5

Отрицание для булевых элементов not.

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

Спасибо, ребята, это был молниеносный ответ!

Ответ 6

Проще сделать:

item.active = not item.active

Итак, наконец, вы получите:

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