Переключение булевых полей из набора запросов с помощью 'not F()'
Я добавил новое действие для переключения свойства Users is_staff
. Но я заметил, что используя метод ниже, можно переключать только от True
к False
. Другой способ, похоже, не работает (т.е. от False
к True
).
admin.py
from django.db.models.expressions import F
actions = ['toggle_staff']
def toggle_staff(self, request, queryset):
queryset.update(is_staff= not F('is_staff'))
Пожалуйста, мне нужна помощь.
Вы всегда можете выполнять итерации над набором запросов, это может быть не лучшим решением, но если вы работаете с несколькими пользователями одновременно, вы не заметите разницы:
def toggle_staff(self, request, queryset):
for user in queryset:
if user.is_staff: user.is_staff = False
else: user.is_staff = True
user.save()