2.7 KiB
relations.relation
RelationType Objects
class RelationType(Enum)
Different types of relations supported by ormar:
- ForeignKey = PRIMARY
- reverse ForeignKey = REVERSE
- ManyToMany = MULTIPLE
Relation Objects
class Relation(Generic[T])
Keeps related Models and handles adding/removing of the children.
__init__
| __init__(manager: "RelationsManager", type_: RelationType, field_name: str, to: Type["T"], through: Type["Model"] = None) -> None
Initialize the Relation and keep the related models either as instances of passed Model, or as a RelationProxy which is basically a list of models with some special behavior, as it exposes QuerySetProxy and allows querying the related models already pre filtered by parent model.
Arguments:
manager (RelationsManager): reference to relation managertype_ (RelationType): type of the relationfield_name (str): name of the relation fieldto (Type[Model]): model to which relation leads tothrough (Type[Model]): model through which relation goes for m2m relations
_clean_related
| _clean_related() -> None
Removes dead weakrefs from RelationProxy.
_find_existing
| _find_existing(child: Union["NewBaseModel", Type["NewBaseModel"]]) -> Optional[int]
Find child model in RelationProxy if exists.
Arguments:
child (Model): child model to find
Returns:
(Optional[ind]): index of child in RelationProxy
add
| add(child: "Model") -> None
Adds child Model to relation, either sets child as related model or adds it to the list in RelationProxy depending on relation type.
Arguments:
child (Model): model to add to relation
remove
| remove(child: Union["NewBaseModel", Type["NewBaseModel"]]) -> None
Removes child Model from relation, either sets None as related model or removes it from the list in RelationProxy depending on relation type.
Arguments:
child (Model): model to remove from relation
get
| get() -> Optional[Union[List["Model"], "Model"]]
Return the related model or models from RelationProxy.
Returns:
(Optional[Union[List[Model], Model]]): related model/models if set