Files
ormar/docs/api/fields/many-to-many.md

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 Model
  • nullable (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 Model
  • through (Model class): through model for m2m relation
  • name (str): name of the database field - later called alias
  • unique (bool): parameter passed to sqlalchemy.ForeignKey, unique flag
  • virtual (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.

 | @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 namespace
  • localns (Any): local namespace

Returns:

(None): None