django-bulk-hooks 0.1.136__tar.gz → 0.1.138__tar.gz

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.

Files changed (17) hide show
  1. {django_bulk_hooks-0.1.136 → django_bulk_hooks-0.1.138}/PKG-INFO +1 -1
  2. {django_bulk_hooks-0.1.136 → django_bulk_hooks-0.1.138}/django_bulk_hooks/queryset.py +13 -2
  3. {django_bulk_hooks-0.1.136 → django_bulk_hooks-0.1.138}/pyproject.toml +1 -1
  4. {django_bulk_hooks-0.1.136 → django_bulk_hooks-0.1.138}/LICENSE +0 -0
  5. {django_bulk_hooks-0.1.136 → django_bulk_hooks-0.1.138}/README.md +0 -0
  6. {django_bulk_hooks-0.1.136 → django_bulk_hooks-0.1.138}/django_bulk_hooks/__init__.py +0 -0
  7. {django_bulk_hooks-0.1.136 → django_bulk_hooks-0.1.138}/django_bulk_hooks/conditions.py +0 -0
  8. {django_bulk_hooks-0.1.136 → django_bulk_hooks-0.1.138}/django_bulk_hooks/constants.py +0 -0
  9. {django_bulk_hooks-0.1.136 → django_bulk_hooks-0.1.138}/django_bulk_hooks/context.py +0 -0
  10. {django_bulk_hooks-0.1.136 → django_bulk_hooks-0.1.138}/django_bulk_hooks/decorators.py +0 -0
  11. {django_bulk_hooks-0.1.136 → django_bulk_hooks-0.1.138}/django_bulk_hooks/engine.py +0 -0
  12. {django_bulk_hooks-0.1.136 → django_bulk_hooks-0.1.138}/django_bulk_hooks/enums.py +0 -0
  13. {django_bulk_hooks-0.1.136 → django_bulk_hooks-0.1.138}/django_bulk_hooks/handler.py +0 -0
  14. {django_bulk_hooks-0.1.136 → django_bulk_hooks-0.1.138}/django_bulk_hooks/manager.py +0 -0
  15. {django_bulk_hooks-0.1.136 → django_bulk_hooks-0.1.138}/django_bulk_hooks/models.py +0 -0
  16. {django_bulk_hooks-0.1.136 → django_bulk_hooks-0.1.138}/django_bulk_hooks/priority.py +0 -0
  17. {django_bulk_hooks-0.1.136 → django_bulk_hooks-0.1.138}/django_bulk_hooks/registry.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: django-bulk-hooks
3
- Version: 0.1.136
3
+ Version: 0.1.138
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
@@ -393,7 +393,14 @@ class HookQuerySet(models.QuerySet):
393
393
 
394
394
  # Use Django's internal _batched_insert method
395
395
  opts = child_model._meta
396
- fields = [f for f in opts.concrete_fields if not f.generated]
396
+ # For child models in MTI, we need to exclude the parent's primary key
397
+ # since it's inherited and not stored in the child table
398
+ fields = [f for f in opts.concrete_fields if not f.generated and not f.primary_key]
399
+ print(f"DEBUG: Child model fields to insert: {[f.name for f in fields]}")
400
+
401
+ # Debug: Check what fields are actually set on the child objects
402
+ for i, child_obj in enumerate(all_child_objects[:3]): # Check first 3 objects
403
+ print(f"DEBUG: Child object {i} fields: {[f.name for f in child_model._meta.local_fields if hasattr(child_obj, f.name) and getattr(child_obj, f.name) is not None]}")
397
404
 
398
405
  with transaction.atomic(using=self.db, savepoint=False):
399
406
  if objs_with_pk:
@@ -413,7 +420,8 @@ class HookQuerySet(models.QuerySet):
413
420
 
414
421
  if objs_without_pk:
415
422
  print(f"DEBUG: Inserting {len(objs_without_pk)} objects without PK")
416
- fields = [f for f in fields if not isinstance(f, AutoField)]
423
+ # For objects without PK, we still need to exclude primary key fields
424
+ fields = [f for f in fields if not isinstance(f, AutoField) and not f.primary_key]
417
425
  returned_columns = base_qs._batched_insert(
418
426
  objs_without_pk,
419
427
  fields,
@@ -473,6 +481,7 @@ class HookQuerySet(models.QuerySet):
473
481
 
474
482
  def _create_child_instance(self, source_obj, child_model, parent_instances):
475
483
  child_obj = child_model()
484
+ # Only copy fields that exist in the child model's local fields
476
485
  for field in child_model._meta.local_fields:
477
486
  if isinstance(field, AutoField):
478
487
  continue
@@ -480,6 +489,8 @@ class HookQuerySet(models.QuerySet):
480
489
  value = getattr(source_obj, field.name, None)
481
490
  if value is not None:
482
491
  setattr(child_obj, field.name, value)
492
+
493
+ # Set parent links for MTI
483
494
  for parent_model, parent_instance in parent_instances.items():
484
495
  parent_link = child_model._meta.get_ancestor_link(parent_model)
485
496
  if parent_link:
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "django-bulk-hooks"
3
- version = "0.1.136"
3
+ version = "0.1.138"
4
4
  description = "Hook-style hooks for Django bulk operations like bulk_create and bulk_update."
5
5
  authors = ["Konrad Beck <konrad.beck@merchantcapital.co.za>"]
6
6
  readme = "README.md"