51 lines
2.4 KiB
Diff
51 lines
2.4 KiB
Diff
Based on the issue description and hint, I have enough context to create the patch. The issue is clear:
|
|
|
|
1. In `django/db/models/query.py`, the `bulk_create` method removes `returning_fields` when `on_conflict` is set
|
|
2. The fix is to allow `returning_fields` when `on_conflict == OnConflict.UPDATE`
|
|
3. The hint shows the exact diff needed at line 1840
|
|
|
|
Let me create the patch based on the information provided in the issue:
|
|
|
|
--- a/django/db/models/query.py
|
|
+++ b/django/db/models/query.py
|
|
@@ -1837,7 +1837,7 @@ class QuerySet(AltersData):
|
|
inserted_rows = []
|
|
bulk_return = connection.features.can_return_rows_from_bulk_insert
|
|
for item in [objs[i : i + batch_size] for i in range(0, len(objs), batch_size)]:
|
|
- if bulk_return and on_conflict is None:
|
|
+ if bulk_return and (on_conflict is None or on_conflict == OnConflict.UPDATE):
|
|
inserted_rows.extend(
|
|
self._insert(
|
|
item,
|
|
@@ -1845,6 +1845,9 @@ class QuerySet(AltersData):
|
|
using=self.db,
|
|
returning_fields=self.model._meta.db_returning_fields,
|
|
)
|
|
+ on_conflict=on_conflict,
|
|
+ update_fields=update_fields,
|
|
+ unique_fields=unique_fields,
|
|
)
|
|
else:
|
|
self._insert(
|
|
|
|
Wait, the hint shows the diff more clearly. Let me re-read the hint and generate the correct patch:
|
|
|
|
--- a/django/db/models/query.py
|
|
+++ b/django/db/models/query.py
|
|
@@ -1837,13 +1837,16 @@ class QuerySet(AltersData):
|
|
inserted_rows = []
|
|
bulk_return = connection.features.can_return_rows_from_bulk_insert
|
|
for item in [objs[i : i + batch_size] for i in range(0, len(objs), batch_size)]:
|
|
- if bulk_return and on_conflict is None:
|
|
+ if bulk_return and (on_conflict is None or on_conflict == OnConflict.UPDATE):
|
|
inserted_rows.extend(
|
|
self._insert(
|
|
item,
|
|
fields=fields,
|
|
using=self.db,
|
|
+ on_conflict=on_conflict,
|
|
+ update_fields=update_fields,
|
|
+ unique_fields=unique_fields,
|
|
returning_fields=self.model._meta.db_returning_fields,
|
|
)
|
|
)
|