refactor translating of aliases from queryset to modelproxy
This commit is contained in:
@ -145,7 +145,7 @@ class Model(NewBaseModel):
|
||||
|
||||
self_fields = self._extract_model_db_fields()
|
||||
self_fields.pop(self.get_column_name_from_alias(self.Meta.pkname))
|
||||
self_fields = self.objects._translate_columns_to_aliases(self_fields)
|
||||
self_fields = self.translate_columns_to_aliases(self_fields)
|
||||
expr = self.Meta.table.update().values(**self_fields)
|
||||
expr = expr.where(self.pk_column == getattr(self, self.Meta.pkname))
|
||||
|
||||
@ -166,6 +166,6 @@ class Model(NewBaseModel):
|
||||
"Instance was deleted from database and cannot be refreshed"
|
||||
)
|
||||
kwargs = dict(row)
|
||||
kwargs = self.objects._translate_aliases_to_columns(kwargs)
|
||||
kwargs = self.translate_aliases_to_columns(kwargs)
|
||||
self.from_dict(kwargs)
|
||||
return self
|
||||
|
||||
@ -140,6 +140,24 @@ class ModelTableProxy:
|
||||
)
|
||||
return to_field
|
||||
|
||||
@classmethod
|
||||
def translate_columns_to_aliases(cls, new_kwargs: dict) -> dict:
|
||||
for field_name, field in cls.Meta.model_fields.items():
|
||||
if (
|
||||
field_name in new_kwargs
|
||||
and field.name is not None
|
||||
and field.name != field_name
|
||||
):
|
||||
new_kwargs[field.name] = new_kwargs.pop(field_name)
|
||||
return new_kwargs
|
||||
|
||||
@classmethod
|
||||
def translate_aliases_to_columns(cls, new_kwargs: dict) -> dict:
|
||||
for field_name, field in cls.Meta.model_fields.items():
|
||||
if field.name in new_kwargs and field.name != field_name:
|
||||
new_kwargs[field_name] = new_kwargs.pop(field.name)
|
||||
return new_kwargs
|
||||
|
||||
@classmethod
|
||||
def merge_instances_list(cls, result_rows: List["Model"]) -> List["Model"]:
|
||||
merged_rows: List["Model"] = []
|
||||
|
||||
Reference in New Issue
Block a user