| 683 | |
| 684 | @staticmethod |
| 685 | def build_meta( |
| 686 | meta_class: Model.Meta, |
| 687 | fields_map: dict[str, Field], |
| 688 | fields_db_projection: dict[str, str], |
| 689 | filters: dict[str, FilterInfoDict], |
| 690 | fk_fields: set[str], |
| 691 | o2o_fields: set[str], |
| 692 | m2m_fields: set[str], |
| 693 | pk_attr: str, |
| 694 | ) -> MetaInfo: |
| 695 | meta = MetaInfo(meta_class) |
| 696 | meta.fields_map = fields_map |
| 697 | meta.fields_db_projection = fields_db_projection |
| 698 | meta._filters = filters |
| 699 | meta.fk_fields = fk_fields |
| 700 | meta.o2o_fields = o2o_fields |
| 701 | meta.m2m_fields = m2m_fields |
| 702 | meta.pk_attr = pk_attr |
| 703 | if pk_field := fields_map.get(pk_attr): |
| 704 | meta.pk = pk_field |
| 705 | if pk_field.source_field: |
| 706 | meta.db_pk_column = pk_field.source_field |
| 707 | elif isinstance(pk_field, OneToOneFieldInstance): |
| 708 | meta.db_pk_column = f"{pk_attr}_id" |
| 709 | else: |
| 710 | meta.db_pk_column = pk_attr |
| 711 | meta._inited = False |
| 712 | if not fields_map: |
| 713 | meta.abstract = True |
| 714 | return meta |
| 715 | |
| 716 | def __getitem__(cls: type[MODEL], key: Any) -> QuerySetSingle[MODEL]: # type: ignore |
| 717 | return cls._getbypk(key) # type: ignore |