Different types of relations supported by ormar:
- ForeignKey = PRIMARY
- reverse ForeignKey = REVERSE
- ManyToMany = MULTIPLE
Keeps related Models and handles adding/removing of the children.
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.
manager: reference to relation manager :type manager: RelationsManager
type_: type of the relation :type type_: RelationType
field_name: name of the relation field :type field_name: str
to: model to which relation leads to :type to: Type[Model]
through: model through which relation goes for m2m relations :type through: Type[Model]
Removes dead weakrefs from RelationProxy.
Find child model in RelationProxy if exists.
child: child model to find :type child: Model
index of child in RelationProxy :rtype: Optional[ind]
Adds child Model to relation, either sets child as related model or adds it to the list in RelationProxy depending on relation type.
child: model to add to relation :type child: Model
Removes child Model from relation, either sets None as related model or removes it from the list in RelationProxy depending on relation type.
child: model to remove from relation :type child: Model
Return the related model or models from RelationProxy.
related model/models if set :rtype: Optional[Union[List[Model], Model]]