django-bulk-hooks 0.2.53__py3-none-any.whl → 0.2.54__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of django-bulk-hooks might be problematic. Click here for more details.

@@ -193,8 +193,12 @@ class MTIHandler:
193
193
  if existing_pks_map is None:
194
194
  existing_pks_map = {}
195
195
 
196
- # For upsert operations, don't set PKs on source objects - let Django's bulk_create handle it
197
- # The PKs will be set on the resulting objects after the bulk operation
196
+ # Set PKs on existing objects so they can be updated
197
+ if existing_pks_map:
198
+ for obj in objs:
199
+ if id(obj) in existing_pks_map:
200
+ obj.pk = existing_pks_map[id(obj)]
201
+ obj.id = existing_pks_map[id(obj)]
198
202
 
199
203
  # Build parent levels
200
204
  parent_levels = self._build_parent_levels(
@@ -402,7 +406,12 @@ class MTIHandler:
402
406
  """
403
407
  child_obj = child_model()
404
408
 
405
- # Copy field values (excluding AutoField and parent links)
409
+ # Copy field values (excluding AutoField, parent links, and inherited fields)
410
+ # In MTI, child objects should only have values for fields defined directly on the child model
411
+ parent_fields = set()
412
+ for parent_model in child_model._meta.parents.keys():
413
+ parent_fields.update(f.name for f in parent_model._meta.local_fields)
414
+
406
415
  for field in child_model._meta.local_fields:
407
416
  if isinstance(field, AutoField):
408
417
  continue
@@ -413,6 +422,10 @@ class MTIHandler:
413
422
  if child_model._meta.get_ancestor_link(field.related_model) == field:
414
423
  continue
415
424
 
425
+ # Skip inherited fields - these belong to parent models
426
+ if field.name in parent_fields:
427
+ continue
428
+
416
429
  if hasattr(source_obj, field.name):
417
430
  # Use centralized field value extraction for consistent FK handling
418
431
  value = get_field_value_for_db(source_obj, field.name, source_obj.__class__)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: django-bulk-hooks
3
- Version: 0.2.53
3
+ Version: 0.2.54
4
4
  Summary: Hook-style hooks for Django bulk operations like bulk_create and bulk_update.
5
5
  License: MIT
6
6
  Keywords: django,bulk,hooks
@@ -16,12 +16,12 @@ django_bulk_hooks/operations/analyzer.py,sha256=wAG8sAG9NwfwNqG9z81VfGR7AANDzRmM
16
16
  django_bulk_hooks/operations/bulk_executor.py,sha256=tMbcwQSN8xNoKL7-KC8m-XhGyqwaAtAQ5CAm3PYHl_Q,24122
17
17
  django_bulk_hooks/operations/coordinator.py,sha256=iGavJLqe3eYRqFay8cMn6muwyRYzQo-HFGphsS5hL6g,30799
18
18
  django_bulk_hooks/operations/field_utils.py,sha256=Tvr5bcZLG8imH-r2S85oui1Cbw6hGv3VtuIMn4OvsU4,2895
19
- django_bulk_hooks/operations/mti_handler.py,sha256=SpDe2fKfFgYfRxhimYfu-d1f4g34luXDoGb8oRR0abI,20549
19
+ django_bulk_hooks/operations/mti_handler.py,sha256=r6F49-6tHbCeu2DFj6PX_7iU4lv6icbNBI8u-v1Fj9U,21092
20
20
  django_bulk_hooks/operations/mti_plans.py,sha256=7STQ2oA2ZT8cEG3-t-6xciRAdf7OeSf0gRLXR_BRG-Q,3363
21
21
  django_bulk_hooks/operations/record_classifier.py,sha256=kqML4aO11X9K3SSJ5DUlUukwI172j_Tk12Kr77ee8q8,7065
22
22
  django_bulk_hooks/queryset.py,sha256=aQitlbexcVnmeAdc0jtO3hci39p4QEu4srQPEzozy5s,5546
23
23
  django_bulk_hooks/registry.py,sha256=uum5jhGI3TPaoiXuA1MdBdu4gbE3rQGGwQ5YDjiMcjk,7949
24
- django_bulk_hooks-0.2.53.dist-info/LICENSE,sha256=dguKIcbDGeZD-vXWdLyErPUALYOvtX_fO4Zjhq481uk,1088
25
- django_bulk_hooks-0.2.53.dist-info/METADATA,sha256=0DsfhnU5TezxhZ1z3-it4KNalYb2aAhuaHqsLKqCWaU,9265
26
- django_bulk_hooks-0.2.53.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
27
- django_bulk_hooks-0.2.53.dist-info/RECORD,,
24
+ django_bulk_hooks-0.2.54.dist-info/LICENSE,sha256=dguKIcbDGeZD-vXWdLyErPUALYOvtX_fO4Zjhq481uk,1088
25
+ django_bulk_hooks-0.2.54.dist-info/METADATA,sha256=ClVI63n_CscKcG0C_7B9rxCCgN4WnDoO5Rl-kWs0FhM,9265
26
+ django_bulk_hooks-0.2.54.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
27
+ django_bulk_hooks-0.2.54.dist-info/RECORD,,