Files
ormar/docs/api/models/mixins/relation-mixin.md

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

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

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

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

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

 | @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 models
  • source_relation (str): name of the current relation
  • source_model (Type["Model"]): model from which relation comes in nested relations

Returns:

(List[str]): list of relation strings to be passed to select_related