fix ordering overwrites

This commit is contained in:
collerek
2021-01-06 16:00:00 +01:00
parent e42bf110cd
commit 4e0a6cefe9
2 changed files with 9 additions and 2 deletions

View File

@ -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(

View File

@ -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