144👍
✅
You can update all the records in the queryset with
qs.update(active=False)
Please refer to the official Django documentation for more info
8👍
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.
- [Django]-Whats the difference between a OneToOne, ManyToMany, and a ForeignKey Field in Django?
- [Django]-Django project models.py versus app models.py
- [Django]-ImproperlyConfiguredError about app_name when using namespace in include()
Source:stackexchange.com