Django: change the value of a field for all objects in a queryset
You can update all the records in the queryset with
qs.update(active=False)
Please refer to the official Django documentation for more info
And of course you can pass many arguments to update e.g.:
qs.update(active=False, is_deleted=True, date_finished=timezone.now())
Edit: Additionally. This simple qs.update(...) won't work on sliced querysets. For example if you have:
users = User.objects.filter(is_active=True)[:10]
user.update(is_active=False) # This will throw error
in that kind of situation, since Django 2.2, you can use bulk_update() method like:
users_to_update = list(User.objects.filter(is_active=True)[:10])
for i in range(10):
users_to_update.is_active = False
User.objects.bulk_update(users_to_update, ["is_active"])
This will be generally done in one query not in 10 separate queries. I've faced that kind of requirements in one of my project. Hope it will be helpful.