black, add additional tests with combined fields and exclude_fields, add aliases for column names to tests with fields and exclude_fields
This commit is contained in:
@ -120,7 +120,13 @@ class SqlJoin:
|
||||
|
||||
pkname_alias = model_cls.get_column_alias(model_cls.Meta.pkname)
|
||||
if not is_multi:
|
||||
self.get_order_bys(alias, to_table, pkname_alias, part)
|
||||
self.get_order_bys(
|
||||
alias=alias,
|
||||
to_table=to_table,
|
||||
pkname_alias=pkname_alias,
|
||||
part=part,
|
||||
model_cls=model_cls,
|
||||
)
|
||||
|
||||
self_related_fields = model_cls.own_table_columns(
|
||||
model_cls, self.fields, self.exclude_fields, nested=True,
|
||||
@ -150,8 +156,21 @@ class SqlJoin:
|
||||
condition[-2] == part or condition[-2][1:] == part
|
||||
)
|
||||
|
||||
def set_aliased_order_by(
|
||||
self, condition: List[str], alias: str, to_table: str, model_cls: Type["Model"],
|
||||
) -> None:
|
||||
direction = f"{'desc' if condition[0][0] == '-' else ''}"
|
||||
column_alias = model_cls.get_column_alias(condition[-1])
|
||||
order = text(f"{alias}_{to_table}.{column_alias} {direction}")
|
||||
self.sorted_orders["__".join(condition)] = order
|
||||
|
||||
def get_order_bys( # noqa: CCR001
|
||||
self, alias: str, to_table: str, pkname_alias: str, part: str
|
||||
self,
|
||||
alias: str,
|
||||
to_table: str,
|
||||
pkname_alias: str,
|
||||
part: str,
|
||||
model_cls: Type["Model"],
|
||||
) -> None:
|
||||
if self.order_columns:
|
||||
split_order_columns = [
|
||||
@ -159,9 +178,12 @@ class SqlJoin:
|
||||
]
|
||||
for condition in split_order_columns:
|
||||
if self._check_if_condition_apply(condition, part):
|
||||
direction = f"{'desc' if condition[0][0] == '-' else ''}"
|
||||
order = text(f"{alias}_{to_table}.{condition[-1]} {direction}")
|
||||
self.sorted_orders["__".join(condition)] = order
|
||||
self.set_aliased_order_by(
|
||||
condition=condition,
|
||||
alias=alias,
|
||||
to_table=to_table,
|
||||
model_cls=model_cls,
|
||||
)
|
||||
else:
|
||||
order = text(f"{alias}_{to_table}.{pkname_alias}")
|
||||
self.sorted_orders[f"{to_table}.{pkname_alias}"] = order
|
||||
|
||||
@ -54,14 +54,17 @@ class Query:
|
||||
pkname_alias = self.model_cls.get_column_alias(self.model_cls.Meta.pkname)
|
||||
return f"{self.table.name}.{pkname_alias}"
|
||||
|
||||
def alias(self, name: str) -> str:
|
||||
return self.model_cls.get_column_alias(name)
|
||||
|
||||
def apply_order_bys_for_primary_model(self) -> None: # noqa: CCR001
|
||||
if self.order_columns:
|
||||
for clause in self.order_columns:
|
||||
if "__" not in clause:
|
||||
clause = (
|
||||
text(f"{clause[1:]} desc")
|
||||
text(f"{self.alias(clause[1:])} desc")
|
||||
if clause.startswith("-")
|
||||
else text(clause)
|
||||
else text(self.alias(clause))
|
||||
)
|
||||
self.sorted_orders[clause] = clause
|
||||
else:
|
||||
|
||||
@ -337,15 +337,15 @@ class QuerySet:
|
||||
expr = self.table.insert()
|
||||
expr = expr.values(**new_kwargs)
|
||||
|
||||
instance = self.model(**kwargs)
|
||||
pk = await self.database.execute(expr)
|
||||
|
||||
pk_name = self.model.get_column_alias(self.model_meta.pkname)
|
||||
if pk_name not in kwargs and pk_name in new_kwargs:
|
||||
instance.pk = new_kwargs[self.model_meta.pkname]
|
||||
kwargs["pk"] = new_kwargs[self.model_meta.pkname]
|
||||
if pk and isinstance(pk, self.model.pk_type()):
|
||||
setattr(instance, self.model_meta.pkname, pk)
|
||||
kwargs[self.model_meta.pkname] = pk
|
||||
|
||||
instance = self.model(**kwargs)
|
||||
# refresh server side defaults
|
||||
instance = await instance.load()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user