MCPcopy Index your code
hub / github.com/tortoise/tortoise-orm / ManyToManyFieldInstance

Class ManyToManyFieldInstance

tortoise/fields/relational.py:379–433  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

377
378
379class ManyToManyFieldInstance(RelationalField[MODEL]):
380 field_type = ManyToManyRelation
381
382 def __init__(
383 self,
384 model_name: type[Model] | str,
385 through: str | None = None,
386 forward_key: str | None = None,
387 backward_key: str = "",
388 related_name: str = "",
389 on_delete: OnDelete = CASCADE,
390 field_type: type[MODEL] = None, # type: ignore
391 unique: bool = True,
392 **kwargs: Any,
393 ) -> None:
394 # TODO: rename through to through_table
395 # TODO: add through to use a Model
396 if "create_unique_index" in kwargs:
397 warnings.warn(
398 "Parameter `create_unique_index` is deprecated! Use `unique` instead.",
399 DeprecationWarning,
400 stacklevel=2,
401 )
402 unique = kwargs.pop("create_unique_index")
403 super().__init__(field_type, unique=unique, **kwargs)
404 self.validate_model_name(model_name)
405 self.model_name = model_name
406 self.related_name: str = related_name
407 if not forward_key:
408 if not isinstance(model_name, str):
409 forward_key = f"{model_name.__name__.lower()}_id"
410 else:
411 forward_key = f"{model_name.split('.')[1].lower()}_id"
412 self.forward_key: str = forward_key
413 self.backward_key: str = backward_key
414 self.through: str = through # type: ignore
415 self.through_schema: str | None = None
416 self._generated: bool = False
417 self.on_delete = on_delete
418
419 def describe(self, serializable: bool) -> dict:
420 desc = super().describe(serializable)
421 if isinstance(self.model_name, str):
422 model_name = self.model_name
423 else:
424 model: type[Model] = self.model_name
425 model_name = f"{model._meta.app}.{model.__name__}"
426 desc["model_name"] = model_name
427 desc["related_name"] = self.related_name
428 desc["forward_key"] = self.forward_key
429 desc["backward_key"] = self.backward_key
430 desc["through"] = self.through
431 desc["on_delete"] = str(self.on_delete)
432 desc["_generated"] = self._generated
433 return desc
434
435
436@overload

Callers 3

_init_relationsMethod · 0.90
ManyToManyFieldFunction · 0.85

Calls

no outgoing calls

Tested by 1

Used in the wild real call sites across dependent graphs

searching dependent graphs…