(
attrs: dict, fields_db_projection: dict, is_abstract: bool
)
| 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: |
no test coverage detected