From 9202d5f8543f7284c9a55f857484e330619edf39 Mon Sep 17 00:00:00 2001 From: Jonathan Weth <git@jonathanweth.de> Date: Sat, 27 Jun 2020 13:46:32 +0200 Subject: [PATCH] Fix syntax errors and property creation in foreign_key helper --- aleksis/core/mixins.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/aleksis/core/mixins.py b/aleksis/core/mixins.py index 7a82ce5cd..d196b044c 100644 --- a/aleksis/core/mixins.py +++ b/aleksis/core/mixins.py @@ -233,8 +233,9 @@ class ExtensibleModel(models.Model, metaclass=_ExtensibleModelBase): # Add field to hold key to foreign model id_field = to_field_type() - self.field(**{id_field_name: id_field}) + cls.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: @@ -248,18 +249,17 @@ class ExtensibleModel(models.Model, metaclass=_ExtensibleModelBase): else: return None - # Add property to wrap get/set on foreign model 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: + def _virtual_fk(self, value: Optional[models.Model] = None) -> None: if value is None: id_field_val = None else: id_field_val = getattr(value, to_field) setattr(self, id_field_name, id_field_val) + # Add property to wrap get/set on foreign model 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"): @@ -267,7 +267,7 @@ class ExtensibleModel(models.Model, metaclass=_ExtensibleModelBase): id_field_val = getattr(self, to_field) return cls.objects.filter(**{id_field_name: id_field_val}) - to.property(_virtual_related, related_name) + to.property_(_virtual_related, related_name) @classmethod def syncable_fields(cls) -> List[models.Field]: -- GitLab