summaryrefslogtreecommitdiff
path: root/django/db/models/sql
diff options
context:
space:
mode:
authorFrançois Freitag <francois.freitag@polyconseil.fr>2016-09-28 22:39:50 -0700
committerTim Graham <timograham@gmail.com>2016-10-04 10:46:29 -0400
commit8ac115c730353dfc6bdbd03e0671a978dcc99e15 (patch)
treef6a7aa9f5917de6f9d2bc529f6ba4da1f6b9c891 /django/db/models/sql
parent9e26a8331dd593c674ac94f2582093da01b070e8 (diff)
Fixed #27193 -- Preserved ordering in select_for_update subqueries.
Diffstat (limited to 'django/db/models/sql')
-rw-r--r--django/db/models/sql/compiler.py7
1 files changed, 5 insertions, 2 deletions
diff --git a/django/db/models/sql/compiler.py b/django/db/models/sql/compiler.py
index 1319b288aa..51c3d6e661 100644
--- a/django/db/models/sql/compiler.py
+++ b/django/db/models/sql/compiler.py
@@ -476,8 +476,11 @@ class SQLCompiler(object):
Used when nesting this query inside another.
"""
obj = self.query.clone()
- if obj.low_mark == 0 and obj.high_mark is None and not self.query.distinct_fields:
- # If there is no slicing in use, then we can safely drop all ordering
+ # It's safe to drop ordering if the queryset isn't using slicing,
+ # distinct(*fields) or select_for_update().
+ if (obj.low_mark == 0 and obj.high_mark is None and
+ not self.query.distinct_fields and
+ not self.query.select_for_update):
obj.clear_ordering(True)
nested_sql = obj.get_compiler(connection=self.connection).as_sql(subquery=True)
if nested_sql == ('', ()):