add mixin support with fields definitions

This commit is contained in:
collerek
2020-12-09 14:27:10 +01:00
parent 3b4dc59e5a
commit 53e0fa8e65
5 changed files with 314 additions and 15 deletions

View File

@ -41,7 +41,7 @@ class ModelTableProxy:
if TYPE_CHECKING: # pragma no cover
Meta: ModelMeta
_related_names: Optional[Set]
_related_names_hash: Union[str, bytes]
_related_fields: Optional[List]
pk: Any
get_name: Callable
_props: Set
@ -202,6 +202,19 @@ class ModelTableProxy:
return field_name
return alias # if not found it's not an alias but actual name
@classmethod
def extract_related_fields(cls) -> List:
if isinstance(cls._related_fields, List):
return cls._related_fields
related_fields = []
for name in cls.extract_related_names():
related_fields.append(cls.Meta.model_fields[name])
cls._related_fields = related_fields
return related_fields
@classmethod
def extract_related_names(cls) -> Set: