more tests for excluding parent fields, finished docs
This commit is contained in:
@ -119,7 +119,7 @@ def get_potential_fields(attrs: Dict) -> Dict:
|
||||
}
|
||||
|
||||
|
||||
def remove_excluded_parent_fields(model: Type["Model"]):
|
||||
def remove_excluded_parent_fields(model: Type["Model"]) -> None:
|
||||
"""
|
||||
Removes pydantic fields that should be excluded from parent models
|
||||
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import uuid
|
||||
from typing import Callable, Collection, Dict, Optional, Set, TYPE_CHECKING, cast
|
||||
from typing import Callable, Collection, Dict, List, Optional, Set, TYPE_CHECKING, cast
|
||||
|
||||
import ormar
|
||||
from ormar.exceptions import ModelPersistenceError
|
||||
@ -275,9 +275,7 @@ class SavePrepareMixin(RelationMixin, AliasMixin):
|
||||
:rtype: int
|
||||
"""
|
||||
for field in fields_list:
|
||||
values = getattr(self, field.name) or []
|
||||
if not isinstance(values, list):
|
||||
values = [values]
|
||||
values = self._get_field_values(name=field.name)
|
||||
for value in values:
|
||||
if follow:
|
||||
update_count = await value.save_related(
|
||||
@ -299,3 +297,17 @@ class SavePrepareMixin(RelationMixin, AliasMixin):
|
||||
update_count=update_count,
|
||||
)
|
||||
return update_count
|
||||
|
||||
def _get_field_values(self, name: str) -> List:
|
||||
"""
|
||||
Extract field values and ensures it is a list.
|
||||
|
||||
:param name: name of the field
|
||||
:type name: str
|
||||
:return: list of values
|
||||
:rtype: List
|
||||
"""
|
||||
values = getattr(self, name) or []
|
||||
if not isinstance(values, list):
|
||||
values = [values]
|
||||
return values
|
||||
|
||||
@ -107,7 +107,7 @@ class Model(ModelRow):
|
||||
await self.signals.post_save.send(sender=self.__class__, instance=self)
|
||||
return self
|
||||
|
||||
async def save_related( # noqa: CCR001
|
||||
async def save_related( # noqa: CCR001, CFQ002
|
||||
self,
|
||||
follow: bool = False,
|
||||
save_all: bool = False,
|
||||
|
||||
@ -552,7 +552,7 @@ class NewBaseModel(pydantic.BaseModel, ModelTableProxy, metaclass=ModelMetaclass
|
||||
return items.get("__all__")
|
||||
return items
|
||||
|
||||
def _extract_nested_models( # noqa: CCR001
|
||||
def _extract_nested_models( # noqa: CCR001, CFQ002
|
||||
self,
|
||||
relation_map: Dict,
|
||||
dict_instance: Dict,
|
||||
|
||||
Reference in New Issue
Block a user