Skip to content
Snippets Groups Projects
Verified Commit 9202d5f8 authored by Jonathan Weth's avatar Jonathan Weth :keyboard:
Browse files

Fix syntax errors and property creation in foreign_key helper

parent df039094
No related branches found
No related tags found
1 merge request!305Allow adding a foreign key to Exensible Model
Pipeline #2861 canceled
......@@ -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]:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment