From 6fc2406fc534f97f245b8267703ab598a020fee5 Mon Sep 17 00:00:00 2001 From: Mariusz Felisiak Date: Fri, 7 Nov 2025 09:57:31 +0100 Subject: Refs #27380 -- Made ManyRelatedManager.set() use *_base() hooks. --- django/db/models/fields/related_descriptors.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/django/db/models/fields/related_descriptors.py b/django/db/models/fields/related_descriptors.py index 6056af3660..866fc58fc2 100644 --- a/django/db/models/fields/related_descriptors.py +++ b/django/db/models/fields/related_descriptors.py @@ -1359,9 +1359,10 @@ def create_forward_many_to_many_manager(superclass, rel, reverse): db = router.db_for_write(self.through, instance=self.instance) with transaction.atomic(using=db, savepoint=False): + self._remove_prefetched_objects() if clear: - self.clear() - self.add(*objs, through_defaults=through_defaults) + self._clear_base(using=db) + self._add_base(*objs, through_defaults=through_defaults, using=db) else: old_ids = set( self.using(db).values_list( @@ -1381,8 +1382,10 @@ def create_forward_many_to_many_manager(superclass, rel, reverse): else: new_objs.append(obj) - self.remove(*old_ids) - self.add(*new_objs, through_defaults=through_defaults) + self._remove_base(*old_ids, using=db) + self._add_base( + *new_objs, through_defaults=through_defaults, using=db + ) set.alters_data = True -- cgit v1.3