From 6d843009e1eb50f7d4e372418470de1d2d2506f5 Mon Sep 17 00:00:00 2001 From: Dominik George <dominik.george@teckids.org> Date: Fri, 12 Jun 2020 13:18:11 +0200 Subject: [PATCH] Use more specific helper methods --- aleksis/core/mixins.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/aleksis/core/mixins.py b/aleksis/core/mixins.py index 1fb6cbffa..9b15f27f1 100644 --- a/aleksis/core/mixins.py +++ b/aleksis/core/mixins.py @@ -223,7 +223,6 @@ class ExtensibleModel(models.Model, metaclass=_ExtensibleModelBase): id_field = to_field_type() self.field(**{id_field_name: id_field}) - @property def _virtual_fk(self) -> Optional[models.Model]: id_field_val = getattr(self, id_field_name) if id_field_val: @@ -237,6 +236,10 @@ class ExtensibleModel(models.Model, metaclass=_ExtensibleModelBase): else: return None + # Add property to wrap get/set on foreign mdoel instance + cls.property(_virtual_fk, field_name) + _virtual_fk = getattr(cls, field_name) + @_virtual_fk.setter def _virtual_fk(self, value: Optional[Model] = None) -> None: if value is None: @@ -245,13 +248,9 @@ class ExtensibleModel(models.Model, metaclass=_ExtensibleModelBase): id_field_val = getattr(value, to_field) setattr(self, id_field_name, id_field_val) - # Add property to wrap get/set on foreign mdoel instance - cls._safe_add(_virtual_fk, field_name) - # Add related property on foreign model instance if it provides such an interface if hasattr(to, "_safe_add"): - @property def _virtual_related(self) -> Optional[models.Model]: id_field_val = getattr(self, to_field) try: @@ -260,7 +259,7 @@ class ExtensibleModel(models.Model, metaclass=_ExtensibleModelBase): # Nothing references us return None - to._safe_add(_virtual_related, related_name) + to.property(_virtual_related, related_name) @classmethod def syncable_fields(cls) -> List[models.Field]: -- GitLab