Store a private copy of the pk during init and use that with __str__

This commit is contained in:
Saria Hajjar 2020-01-13 14:57:21 +00:00
parent 49fa243b4f
commit 3d78a67343

View File

@ -3027,24 +3027,18 @@ class Cable(ChangeLoggedModel):
('termination_b_type', 'termination_b_id'),
)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# A copy of the PK to be used by __str__ in case the object is deleted
self._pk = self.pk
def __str__(self):
if self.label:
return self.label
# Save a copy of the PK on the instance since it's nullified if .delete() is called
if not hasattr(self, 'id_string'):
self.id_string = '#{}'.format(self.pk)
return self.id_string
return self.label or '#{}'.format(self._pk)
def get_absolute_url(self):
return reverse('dcim:cable', args=[self.pk])
def delete(self, *args, **kwargs):
# Trigger the __str__ method to save the pk into `self.id_string`
str(self)
super().delete(*args, **kwargs)
def clean(self):
# Validate that termination A exists