Ответ 1
Вы можете сделать это:
item.active = not item.active
Это должно сделать трюк:)
У меня есть сайт 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()
, кажется, возвращает отрицание целого числа, а не отрицание булева.
Спасибо за помощь.
Вы можете сделать это:
item.active = not item.active
Это должно сделать трюк:)
Я думаю, что вы хотите
item.active = not item.active
item.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()