From 2798c937deb6625a4e6a36e70d4d60ce5faac954 Mon Sep 17 00:00:00 2001 From: Ed Rivas Date: Wed, 4 May 2022 18:10:53 -0600 Subject: Fixed #29538 -- Fixed crash of ordering by related fields when Meta.ordering contains expressions. Thanks Simon Charette for the review. --- django/db/models/sql/compiler.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'django/db/models/sql') diff --git a/django/db/models/sql/compiler.py b/django/db/models/sql/compiler.py index 13b606255c..9c7bd8ea1a 100644 --- a/django/db/models/sql/compiler.py +++ b/django/db/models/sql/compiler.py @@ -912,10 +912,15 @@ class SQLCompiler: ): item = item.desc() if descending else item.asc() if isinstance(item, OrderBy): - results.append((item, False)) + results.append( + (item.prefix_references(f"{name}{LOOKUP_SEP}"), False) + ) continue results.extend( - self.find_ordering_name(item, opts, alias, order, already_seen) + (expr.prefix_references(f"{name}{LOOKUP_SEP}"), is_ref) + for expr, is_ref in self.find_ordering_name( + item, opts, alias, order, already_seen + ) ) return results targets, alias, _ = self.query.trim_joins(targets, joins, path) -- cgit v1.3