django-bulk-hooks 0.1.268__py3-none-any.whl → 0.1.270__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.
- django_bulk_hooks/queryset.py +15 -3
- {django_bulk_hooks-0.1.268.dist-info → django_bulk_hooks-0.1.270.dist-info}/METADATA +1 -1
- {django_bulk_hooks-0.1.268.dist-info → django_bulk_hooks-0.1.270.dist-info}/RECORD +5 -5
- {django_bulk_hooks-0.1.268.dist-info → django_bulk_hooks-0.1.270.dist-info}/LICENSE +0 -0
- {django_bulk_hooks-0.1.268.dist-info → django_bulk_hooks-0.1.270.dist-info}/WHEEL +0 -0
django_bulk_hooks/queryset.py
CHANGED
|
@@ -532,24 +532,33 @@ class HookQuerySetMixin:
|
|
|
532
532
|
unique_values = []
|
|
533
533
|
for obj in objs:
|
|
534
534
|
unique_value = {}
|
|
535
|
+
query_fields = {} # Track which database field to use for each unique field
|
|
535
536
|
for field_name in unique_fields:
|
|
536
537
|
if hasattr(obj, field_name):
|
|
537
538
|
unique_value[field_name] = getattr(obj, field_name)
|
|
539
|
+
query_fields[field_name] = field_name
|
|
540
|
+
elif hasattr(obj, field_name + '_id'):
|
|
541
|
+
# Handle ForeignKey fields where _id suffix is used
|
|
542
|
+
unique_value[field_name] = getattr(obj, field_name + '_id')
|
|
543
|
+
query_fields[field_name] = field_name + '_id' # Use _id field for query
|
|
538
544
|
if unique_value:
|
|
539
|
-
unique_values.append(unique_value)
|
|
545
|
+
unique_values.append((unique_value, query_fields))
|
|
540
546
|
|
|
541
547
|
if unique_values:
|
|
542
548
|
# Query the database to see which records already exist - SINGLE BULK QUERY
|
|
543
549
|
from django.db.models import Q
|
|
544
550
|
|
|
545
551
|
existing_filters = Q()
|
|
546
|
-
for unique_value in unique_values:
|
|
552
|
+
for unique_value, query_fields in unique_values:
|
|
547
553
|
filter_kwargs = {}
|
|
548
554
|
for field_name, value in unique_value.items():
|
|
549
|
-
|
|
555
|
+
# Use the correct database field name (may include _id suffix)
|
|
556
|
+
db_field_name = query_fields[field_name]
|
|
557
|
+
filter_kwargs[db_field_name] = value
|
|
550
558
|
existing_filters |= Q(**filter_kwargs)
|
|
551
559
|
|
|
552
560
|
# Get all existing records in one query and create a lookup set
|
|
561
|
+
# We need to use the original unique_fields for values_list to maintain consistency
|
|
553
562
|
existing_records_lookup = set()
|
|
554
563
|
for existing_record in model_cls.objects.filter(
|
|
555
564
|
existing_filters
|
|
@@ -563,6 +572,9 @@ class HookQuerySetMixin:
|
|
|
563
572
|
for field_name in unique_fields:
|
|
564
573
|
if hasattr(obj, field_name):
|
|
565
574
|
obj_unique_value[field_name] = getattr(obj, field_name)
|
|
575
|
+
elif hasattr(obj, field_name + '_id'):
|
|
576
|
+
# Handle ForeignKey fields where _id suffix is used
|
|
577
|
+
obj_unique_value[field_name] = getattr(obj, field_name + '_id')
|
|
566
578
|
|
|
567
579
|
# Check if this record already exists using our bulk lookup
|
|
568
580
|
if obj_unique_value:
|
|
@@ -9,9 +9,9 @@ django_bulk_hooks/handler.py,sha256=Bx-W6yyiciKMyy-BRxUt3CmRPCrX9_LhQgU-5LaJTjg,
|
|
|
9
9
|
django_bulk_hooks/manager.py,sha256=3jNWL-EkvGScsliNc7mW-ozQCG6HyaEevI1u1BFS4AA,3836
|
|
10
10
|
django_bulk_hooks/models.py,sha256=WtSfc4GBOG_oOt8n37cVvid0MtFIGze9JYKSixil2y0,4370
|
|
11
11
|
django_bulk_hooks/priority.py,sha256=HG_2D35nga68lBCZmSXTcplXrjFoRgZFRDOy4ROKonY,376
|
|
12
|
-
django_bulk_hooks/queryset.py,sha256=
|
|
12
|
+
django_bulk_hooks/queryset.py,sha256=GggX-BoBm9hKcO5Bs6N2oQQ01yjhhGCBdz6YK4gkuHQ,90329
|
|
13
13
|
django_bulk_hooks/registry.py,sha256=GRUTGVQEO2sdkC9OaZ9Q3U7mM-3Ix83uTyvrlTtpatw,1317
|
|
14
|
-
django_bulk_hooks-0.1.
|
|
15
|
-
django_bulk_hooks-0.1.
|
|
16
|
-
django_bulk_hooks-0.1.
|
|
17
|
-
django_bulk_hooks-0.1.
|
|
14
|
+
django_bulk_hooks-0.1.270.dist-info/LICENSE,sha256=dguKIcbDGeZD-vXWdLyErPUALYOvtX_fO4Zjhq481uk,1088
|
|
15
|
+
django_bulk_hooks-0.1.270.dist-info/METADATA,sha256=fCm_gvOH4hJioiQe3eRm-74Eg_nqhuxUu85oE9lLwm4,9115
|
|
16
|
+
django_bulk_hooks-0.1.270.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
|
17
|
+
django_bulk_hooks-0.1.270.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|