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.
- {django_bulk_hooks-0.1.136 → django_bulk_hooks-0.1.138}/PKG-INFO +1 -1
- {django_bulk_hooks-0.1.136 → django_bulk_hooks-0.1.138}/django_bulk_hooks/queryset.py +13 -2
- {django_bulk_hooks-0.1.136 → django_bulk_hooks-0.1.138}/pyproject.toml +1 -1
- {django_bulk_hooks-0.1.136 → django_bulk_hooks-0.1.138}/LICENSE +0 -0
- {django_bulk_hooks-0.1.136 → django_bulk_hooks-0.1.138}/README.md +0 -0
- {django_bulk_hooks-0.1.136 → django_bulk_hooks-0.1.138}/django_bulk_hooks/__init__.py +0 -0
- {django_bulk_hooks-0.1.136 → django_bulk_hooks-0.1.138}/django_bulk_hooks/conditions.py +0 -0
- {django_bulk_hooks-0.1.136 → django_bulk_hooks-0.1.138}/django_bulk_hooks/constants.py +0 -0
- {django_bulk_hooks-0.1.136 → django_bulk_hooks-0.1.138}/django_bulk_hooks/context.py +0 -0
- {django_bulk_hooks-0.1.136 → django_bulk_hooks-0.1.138}/django_bulk_hooks/decorators.py +0 -0
- {django_bulk_hooks-0.1.136 → django_bulk_hooks-0.1.138}/django_bulk_hooks/engine.py +0 -0
- {django_bulk_hooks-0.1.136 → django_bulk_hooks-0.1.138}/django_bulk_hooks/enums.py +0 -0
- {django_bulk_hooks-0.1.136 → django_bulk_hooks-0.1.138}/django_bulk_hooks/handler.py +0 -0
- {django_bulk_hooks-0.1.136 → django_bulk_hooks-0.1.138}/django_bulk_hooks/manager.py +0 -0
- {django_bulk_hooks-0.1.136 → django_bulk_hooks-0.1.138}/django_bulk_hooks/models.py +0 -0
- {django_bulk_hooks-0.1.136 → django_bulk_hooks-0.1.138}/django_bulk_hooks/priority.py +0 -0
- {django_bulk_hooks-0.1.136 → django_bulk_hooks-0.1.138}/django_bulk_hooks/registry.py +0 -0
|
@@ -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
|
-
|
|
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
|
-
|
|
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.
|
|
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"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|