diff options
| author | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2025-11-07 09:57:31 +0100 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2025-12-17 18:37:18 +0100 |
| commit | 6fc2406fc534f97f245b8267703ab598a020fee5 (patch) | |
| tree | cdf9cecf14d8c83503958f7e8a5feebbc4ac535f | |
| parent | c3b6c2969171d8867308406bb03d60f86a422904 (diff) | |
Refs #27380 -- Made ManyRelatedManager.set() use *_base() hooks.
| -rw-r--r-- | django/db/models/fields/related_descriptors.py | 11 |
1 files 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 |
