3.3 KiB
models.mixins.relation_mixin
RelationMixin Objects
class RelationMixin()
Used to return relation fields/names etc. from given model
extract_db_own_fields
| @classmethod
| extract_db_own_fields(cls) -> Set
Returns only fields that are stored in the own database table, exclude all related fields.
Returns:
(Set): set of model fields with relation fields excluded
extract_related_fields
| @classmethod
| extract_related_fields(cls) -> List
Returns List of ormar Fields for all relations declared on a model. List is cached in cls._related_fields for quicker access.
Returns:
(List): list of related fields
extract_through_names
| @classmethod
| extract_through_names(cls) -> Set
Extracts related fields through names which are shortcuts to through models.
Returns:
(Set): set of related through fields names
extract_related_names
| @classmethod
| extract_related_names(cls) -> Set[str]
Returns List of fields names for all relations declared on a model. List is cached in cls._related_names for quicker access.
Returns:
(Set): set of related fields names
_extract_db_related_names
| @classmethod
| _extract_db_related_names(cls) -> Set
Returns only fields that are stored in the own database table, exclude related fields that are not stored as foreign keys on given model.
Returns:
(Set): set of model fields with non fk relation fields excluded
_exclude_related_names_not_required
| @classmethod
| _exclude_related_names_not_required(cls, nested: bool = False) -> Set
Returns a set of non mandatory related models field names.
For a main model (not nested) only nullable related field names are returned, for nested models all related models are returned.
Arguments:
nested (bool): flag setting nested models (child of previous one, not main one)
Returns:
(Set): set of non mandatory related fields
_iterate_related_models
| @classmethod
| _iterate_related_models(cls, visited: Set[Union[Type["Model"], Type["RelationMixin"]]] = None, source_relation: str = None, source_model: Union[Type["Model"], Type["RelationMixin"]] = None) -> List[str]
Iterates related models recursively to extract relation strings of nested not visited models.
Arguments:
visited (Set[str]): set of already visited modelssource_relation (str): name of the current relationsource_model (Type["Model"]): model from which relation comes in nested relations
Returns:
(List[str]): list of relation strings to be passed to select_related