1
0
mirror of https://github.com/django/django.git synced 2025-10-27 15:46:10 +00:00

Fixed #36360 -- Fixed QuerySet.update() crash when referring annotations through values().

The issue was only manifesting itself when also filtering againt a related
model as that forces the usage of a subquery because SQLUpdateCompiler doesn't
support the UPDATE FROM syntax yet.

Regression in 65ad4ade74.

Refs #28900.

Thanks Gav O'Connor for the detailed report.
This commit is contained in:
Simon Charette
2025-04-29 13:42:26 -04:00
committed by Sarah Boyce
parent 27ffccc96b
commit 8ef4e0bd42
3 changed files with 14 additions and 2 deletions

View File

@@ -1250,8 +1250,9 @@ class QuerySet(AltersData):
new_order_by.append(col)
query.order_by = tuple(new_order_by)
# Clear any annotations so that they won't be present in subqueries.
query.annotations = {}
# Clear SELECT clause as all annotation references were inlined by
# add_update_values() already.
query.clear_select_clause()
with transaction.mark_for_rollback_on_error(using=self.db):
rows = query.get_compiler(self.db).execute_sql(ROW_COUNT)
self._result_cache = None