Skip to content

Commit e227720

Browse files
WaVEVtimgraham
authored andcommitted
Add as_expr parameter to OrderBy
1 parent 8ce7ab0 commit e227720

File tree

2 files changed

+13
-11
lines changed

2 files changed

+13
-11
lines changed

django_mongodb_backend/compiler.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -744,10 +744,10 @@ def _get_ordering(self):
744744
idx = itertools.count(start=1)
745745
for order in self.order_by_objs or []:
746746
if isinstance(order.expression, Col):
747-
field_name = order.as_mql(self, self.connection, as_expr=True).removeprefix("$")
747+
field_name = order.as_mql(self, self.connection)
748748
fields.append((order.expression.target.column, order.expression))
749749
elif isinstance(order.expression, Ref):
750-
field_name = order.as_mql(self, self.connection, as_expr=True).removeprefix("$")
750+
field_name = order.as_mql(self, self.connection)
751751
else:
752752
field_name = f"__order{next(idx)}"
753753
fields.append((field_name, order.expression))

django_mongodb_backend/expressions/builtins.py

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -110,8 +110,13 @@ def negated_expression(self, compiler, connection):
110110
return {"$not": expression_wrapper(self, compiler, connection)}
111111

112112

113-
def order_by(self, compiler, connection):
114-
return self.expression.as_mql(compiler, connection, as_expr=True)
113+
def order_by(self, compiler, connection, as_expr=False):
114+
return self.expression.as_mql(compiler, connection, as_expr=as_expr)
115+
116+
117+
@property
118+
def order_by_can_use_path(self):
119+
return self.expression.is_simple_column
115120

116121

117122
def query(self, compiler, connection, get_wrapping_pipeline=None, as_expr=False):
@@ -180,11 +185,6 @@ def ref(self, compiler, connection, as_expr=False): # noqa: ARG001
180185
return f"{prefix}{refs}"
181186

182187

183-
@property
184-
def ref_is_simple_column(self):
185-
return self.source.is_simple_column
186-
187-
188188
def star(self, compiler, connection): # noqa: ARG001
189189
return {"$literal": True}
190190

@@ -245,11 +245,13 @@ def register_expressions():
245245
ExpressionList.as_mql = process_lhs
246246
ExpressionWrapper.as_mql_expr = expression_wrapper
247247
NegatedExpression.as_mql_expr = negated_expression
248-
OrderBy.as_mql_expr = order_by
248+
OrderBy.as_mql_expr = partialmethod(order_by, as_expr=True)
249+
OrderBy.as_mql_path = partialmethod(order_by, as_expr=False)
250+
OrderBy.can_use_path = order_by_can_use_path
249251
Query.as_mql = query
250252
RawSQL.as_mql = raw_sql
251253
Ref.as_mql = ref
252-
Ref.is_simple_column = ref_is_simple_column
254+
Ref.is_simple_column = True
253255
ResolvedOuterRef.as_mql = ResolvedOuterRef.as_sql
254256
Star.as_mql_expr = star
255257
Subquery.as_mql_expr = partialmethod(subquery, as_expr=True)

0 commit comments

Comments
 (0)