MCPcopy
hub / github.com/tortoise/tortoise-orm / _dispatch_fields

Method _dispatch_fields

tortoise/models.py:629–670  ·  view source on GitHub ↗
(
        attrs: dict, fields_db_projection: dict, is_abstract: bool
    )

Source from the content-addressed store, hash-verified

627
628 @staticmethod
629 def _dispatch_fields(
630 attrs: dict, fields_db_projection: dict, is_abstract: bool
631 ) -> tuple[
632 dict[str, Field],
633 dict[str, FilterInfoDict],
634 set[str],
635 set[str],
636 set[str],
637 ]:
638 fields_map: dict[str, Field] = {}
639 filters: dict[str, FilterInfoDict] = {}
640 fk_fields: set[str] = set()
641 m2m_fields: set[str] = set()
642 o2o_fields: set[str] = set()
643 for key, value in attrs.items():
644 if isinstance(value, Field):
645 if is_abstract:
646 value = deepcopy(value)
647
648 field = fields_map[key] = value
649 value.model_field_name = key
650
651 if isinstance(value, OneToOneFieldInstance):
652 o2o_fields.add(key)
653 elif isinstance(value, ForeignKeyFieldInstance):
654 fk_fields.add(key)
655 elif isinstance(value, ManyToManyFieldInstance):
656 m2m_fields.add(key)
657 else:
658 source_field = fields_db_projection[key] = value.source_field or key
659 filters.update(
660 get_filters_for_field(
661 field_name=key, field=field, source_field=source_field
662 )
663 )
664 if value.pk:
665 filters.update(
666 get_filters_for_field(
667 field_name="pk", field=field, source_field=source_field
668 )
669 )
670 return (fields_map, filters, fk_fields, m2m_fields, o2o_fields)
671
672 @staticmethod
673 def _check_field_name_conflicts(fields_map: dict[str, Field], name: str) -> None:

Callers 1

__new__Method · 0.80

Calls 4

get_filters_for_fieldFunction · 0.90
itemsMethod · 0.80
addMethod · 0.80
updateMethod · 0.80

Tested by

no test coverage detected