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