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

4.4 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: "ToType", through: Optional["ToType"] = None, *, 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

get_relation_name

 | @classmethod
 | get_relation_name(cls) -> str

Returns name of the relation, which can be a own name or through model names for m2m models

Returns:

(bool): result of the check

get_source_model

 | @classmethod
 | get_source_model(cls) -> Type["Model"]

Returns model from which the relation comes -> either owner or through model

Returns:

(Type["Model"]): source model

create_default_through_model

 | @classmethod
 | create_default_through_model(cls) -> None

Creates default empty through model if no additional fields are required.