3.6 KiB
fields.many_to_many
populate_m2m_params_based_on_to_model
populate_m2m_params_based_on_to_model(to: Type["Model"], nullable: bool) -> Tuple[Any, Any]
Based on target to model to which relation leads to populates the type of the pydantic field to use and type of the target column field.
Arguments:
to (Model class): target related ormar Modelnullable (bool): marks field as optional/ required
Returns:
(tuple with target pydantic type and target col type): Tuple[List, Any]
ManyToMany
ManyToMany(to: Union[Type["Model"], ForwardRef], through: Union[Type["Model"], ForwardRef], *, name: str = None, unique: bool = False, virtual: bool = False, **kwargs: Any, ,) -> Any
Despite a name it's a function that returns constructed ManyToManyField. This function is actually used in model declaration (as ormar.ManyToMany(ToModel, through=ThroughModel)).
Accepts number of relation setting parameters as well as all BaseField ones.
Arguments:
to (Model class): target related ormar Modelthrough (Model class): through model for m2m relationname (str): name of the database field - later called aliasunique (bool): parameter passed to sqlalchemy.ForeignKey, unique flagvirtual (bool): marks if relation is virtual. It is for reversed FK and auto generated FK on through model in Many2Many relations.kwargs (Any): all other args to be populated by BaseField
Returns:
(ManyToManyField): ormar ManyToManyField with m2m relation to selected model
ManyToManyField Objects
class ManyToManyField(ForeignKeyField, ormar.QuerySetProtocol, ormar.RelationProtocol)
Actual class returned from ManyToMany function call and stored in model_fields.
get_source_related_name
| @classmethod
| get_source_related_name(cls) -> str
Returns name to use for source relation name.
For FK it's the same, differs for m2m fields.
It's either set as related_name or by default it's field name.
Returns:
(str): name of the related_name or default related name.
default_target_field_name
| @classmethod
| default_target_field_name(cls) -> str
Returns default target model name on through model.
Returns:
(str): name of the field
default_source_field_name
| @classmethod
| default_source_field_name(cls) -> str
Returns default target model name on through model.
Returns:
(str): name of the field
has_unresolved_forward_refs
| @classmethod
| has_unresolved_forward_refs(cls) -> bool
Verifies if the filed has any ForwardRefs that require updating before the model can be used.
Returns:
(bool): result of the check
evaluate_forward_ref
| @classmethod
| evaluate_forward_ref(cls, globalns: Any, localns: Any) -> None
Evaluates the ForwardRef to actual Field based on global and local namespaces
Arguments:
globalns (Any): global namespacelocalns (Any): local namespace
Returns:
(None): None