Skip to content

Commit 48736c3

Browse files
committed
Fix fieldname collision in foreign fields.
1 parent d4fcef0 commit 48736c3

File tree

2 files changed

+7
-7
lines changed

2 files changed

+7
-7
lines changed

django_mongodb/compiler.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -463,28 +463,29 @@ def _get_ordering(self):
463463
- A tuple of ('field_name': Expression, ...) for expressions that need
464464
to be added to extra_fields.
465465
"""
466-
fields = {}
466+
fields = []
467467
sort_ordering = SON()
468-
extra_fields = {}
468+
extra_fields = []
469469
idx = itertools.count(start=1)
470470
for order in self.order_by_objs or []:
471471
if isinstance(order.expression, Col):
472472
field_name = order.expression.as_mql(self, self.connection).removeprefix("$")
473-
fields[order.expression.target.column] = order.expression
473+
# fields[order.expression.target.column] = order.expression
474+
fields.append((order.expression.target.column, order.expression))
474475
elif isinstance(order.expression, Ref):
475476
field_name = order.expression.as_mql(self, self.connection).removeprefix("$")
476477
else:
477478
field_name = f"__order{next(idx)}"
478-
fields[field_name] = order.expression
479+
fields.append((field_name, order.expression))
479480
# If the expression is ordered by NULLS FIRST or NULLS LAST,
480481
# add a field for sorting that's 1 if null or 0 if not.
481482
if order.nulls_first or order.nulls_last:
482483
null_fieldname = f"__order{next(idx)}"
483484
condition = When(IsNull(order.expression, True), then=Value(1))
484-
extra_fields[null_fieldname] = Case(condition, default=Value(0))
485+
extra_fields.append((null_fieldname, Case(condition, default=Value(0))))
485486
sort_ordering[null_fieldname] = DESCENDING if order.nulls_first else ASCENDING
486487
sort_ordering[field_name] = DESCENDING if order.descending else ASCENDING
487-
return tuple(fields.items()), sort_ordering, tuple(extra_fields.items())
488+
return tuple(fields), sort_ordering, tuple(extra_fields)
488489

489490
def get_where(self):
490491
return self.where

django_mongodb/features.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,6 @@ class DatabaseFeatures(BaseDatabaseFeatures):
6969
"aggregation_regress.tests.AggregationTests.test_more_more_more3",
7070
# To triage:
7171
"aggregation_regress.tests.AggregationTests.test_aggregation_with_generic_reverse_relation",
72-
"aggregation_regress.tests.AggregationTests.test_more_more1",
7372
}
7473
# $bitAnd, #bitOr, and $bitXor are new in MongoDB 6.3.
7574
_django_test_expected_failures_bitwise = {

0 commit comments

Comments
 (0)