From 4e0a6cefe9f6aa8fb2b2d85c69507c86988f95db Mon Sep 17 00:00:00 2001 From: collerek Date: Wed, 6 Jan 2021 16:00:00 +0100 Subject: [PATCH] fix ordering overwrites --- ormar/queryset/join.py | 9 ++++++++- ormar/queryset/queryset.py | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/ormar/queryset/join.py b/ormar/queryset/join.py index d255f1c..ffb07cf 100644 --- a/ormar/queryset/join.py +++ b/ormar/queryset/join.py @@ -153,6 +153,7 @@ class SqlJoin: exclude_fields=exclude_fields, ) part = new_part + if index > 0: # nested joins fields, exclude_fields = SqlJoin.update_inclusions( model_cls=join_parameters.model_cls, @@ -384,20 +385,26 @@ class SqlJoin: :type model_cls: Type[Model] """ if self.order_columns: + current_table_sorted = False split_order_columns = [ x.split("__") for x in self.order_columns if "__" in x ] for condition in split_order_columns: if self._check_if_condition_apply(condition, part): + current_table_sorted = True self.set_aliased_order_by( condition=condition, alias=alias, to_table=to_table, model_cls=model_cls, ) + if not current_table_sorted: + order = text(f"{alias}_{to_table}.{pkname_alias}") + self.sorted_orders[f"{part}.{pkname_alias}"] = order + else: order = text(f"{alias}_{to_table}.{pkname_alias}") - self.sorted_orders[f"{to_table}.{pkname_alias}"] = order + self.sorted_orders[f"{part}.{pkname_alias}"] = order @staticmethod def get_to_and_from_keys( diff --git a/ormar/queryset/queryset.py b/ormar/queryset/queryset.py index 3ab3489..131a243 100644 --- a/ormar/queryset/queryset.py +++ b/ormar/queryset/queryset.py @@ -190,7 +190,7 @@ class QuerySet: limit_raw_sql=self.limit_sql_raw, ) exp = qry.build_select_expression() - # print(exp.compile(compile_kwargs={"literal_binds": True})) + # print("\n", exp.compile(compile_kwargs={"literal_binds": True})) return exp def filter(self, _exclude: bool = False, **kwargs: Any) -> "QuerySet": # noqa: A003