django-bulk-hooks 0.1.269__py3-none-any.whl → 0.1.271__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.

@@ -532,31 +532,41 @@ 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
538
540
  elif hasattr(obj, field_name + '_id'):
539
541
  # Handle ForeignKey fields where _id suffix is used
540
542
  unique_value[field_name] = getattr(obj, field_name + '_id')
543
+ query_fields[field_name] = field_name + '_id' # Use _id field for query
541
544
  if unique_value:
542
- unique_values.append(unique_value)
545
+ unique_values.append((unique_value, query_fields))
543
546
 
544
547
  if unique_values:
545
548
  # Query the database to see which records already exist - SINGLE BULK QUERY
546
549
  from django.db.models import Q
547
550
 
548
551
  existing_filters = Q()
549
- for unique_value in unique_values:
552
+ for unique_value, query_fields in unique_values:
550
553
  filter_kwargs = {}
551
554
  for field_name, value in unique_value.items():
552
- filter_kwargs[field_name] = value
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
553
558
  existing_filters |= Q(**filter_kwargs)
554
559
 
560
+ logger.debug(f"DEBUG: Existence check query filters: {existing_filters}")
561
+ logger.debug(f"DEBUG: Unique fields for values_list: {unique_fields}")
562
+
555
563
  # Get all existing records in one query and create a lookup set
564
+ # We need to use the original unique_fields for values_list to maintain consistency
556
565
  existing_records_lookup = set()
557
- for existing_record in model_cls.objects.filter(
558
- existing_filters
559
- ).values_list(*unique_fields):
566
+ existing_query = model_cls.objects.filter(existing_filters)
567
+ logger.debug(f"DEBUG: Existence check SQL: {existing_query.query}")
568
+
569
+ for existing_record in existing_query.values_list(*unique_fields):
560
570
  # Convert tuple to a hashable key for lookup
561
571
  existing_records_lookup.add(existing_record)
562
572
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: django-bulk-hooks
3
- Version: 0.1.269
3
+ Version: 0.1.271
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
@@ -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=W3ZYbfmxPaPmbc2ektDHmMieDVDmfeYKtbdIEiqMcBE,89762
12
+ django_bulk_hooks/queryset.py,sha256=2Ikzve6IsE4lku33hxtrIsouoeYkEwWLrYGz_kAmnHg,90614
13
13
  django_bulk_hooks/registry.py,sha256=GRUTGVQEO2sdkC9OaZ9Q3U7mM-3Ix83uTyvrlTtpatw,1317
14
- django_bulk_hooks-0.1.269.dist-info/LICENSE,sha256=dguKIcbDGeZD-vXWdLyErPUALYOvtX_fO4Zjhq481uk,1088
15
- django_bulk_hooks-0.1.269.dist-info/METADATA,sha256=XMVW-QQc_K3N4cvBDI_gXzrTc6VCtcLJ61a-VHZnwQk,9115
16
- django_bulk_hooks-0.1.269.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
17
- django_bulk_hooks-0.1.269.dist-info/RECORD,,
14
+ django_bulk_hooks-0.1.271.dist-info/LICENSE,sha256=dguKIcbDGeZD-vXWdLyErPUALYOvtX_fO4Zjhq481uk,1088
15
+ django_bulk_hooks-0.1.271.dist-info/METADATA,sha256=5ysS8y9iRarXdKATSCGorq3-0H8LD-tkrjXgxVXWeFw,9115
16
+ django_bulk_hooks-0.1.271.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
17
+ django_bulk_hooks-0.1.271.dist-info/RECORD,,