Django: change the value of a field for all objects in a queryset
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.
You can update all the records in the queryset with
qs.update(active=False)
Please refer to the official Django documentation for more info