(self, *objs, bulk=True)
| 720 | ) |
| 721 | |
| 722 | def add(self, *objs, bulk=True): |
| 723 | self._remove_prefetched_objects() |
| 724 | db = router.db_for_write(self.model, instance=self.instance) |
| 725 | |
| 726 | def check_and_update_obj(obj): |
| 727 | if not isinstance(obj, self.model): |
| 728 | raise TypeError( |
| 729 | "'%s' instance expected, got %r" |
| 730 | % (self.model._meta.object_name, obj) |
| 731 | ) |
| 732 | setattr(obj, self.content_type_field_name, self.content_type) |
| 733 | setattr(obj, self.object_id_field_name, self.pk_val) |
| 734 | |
| 735 | if bulk: |
| 736 | pks = [] |
| 737 | for obj in objs: |
| 738 | if obj._state.adding or obj._state.db != db: |
| 739 | raise ValueError( |
| 740 | "%r instance isn't saved. Use bulk=False or save " |
| 741 | "the object first." % obj |
| 742 | ) |
| 743 | check_and_update_obj(obj) |
| 744 | pks.append(obj.pk) |
| 745 | |
| 746 | self.model._base_manager.using(db).filter(pk__in=pks).update( |
| 747 | **{ |
| 748 | self.content_type_field_name: self.content_type, |
| 749 | self.object_id_field_name: self.pk_val, |
| 750 | } |
| 751 | ) |
| 752 | else: |
| 753 | with transaction.atomic(using=db, savepoint=False): |
| 754 | for obj in objs: |
| 755 | check_and_update_obj(obj) |
| 756 | obj.save() |
| 757 | |
| 758 | add.alters_data = True |
| 759 |
no test coverage detected