diff --git a/netbox/dcim/forms/connections.py b/netbox/dcim/forms/connections.py index ef796ea64..7058c01d6 100644 --- a/netbox/dcim/forms/connections.py +++ b/netbox/dcim/forms/connections.py @@ -47,7 +47,7 @@ class BaseCableConnectionForm(TenancyForm, NetBoxModelForm): for ct in terminations: ct.save() else: - instance.terminations = [ + instance._terminations = [ *self.cleaned_data['a_terminations'], *self.cleaned_data['b_terminations'], ] diff --git a/netbox/dcim/migrations/0154_cabletermination.py b/netbox/dcim/migrations/0154_cabletermination.py index b8bbd5101..5a3a335fe 100644 --- a/netbox/dcim/migrations/0154_cabletermination.py +++ b/netbox/dcim/migrations/0154_cabletermination.py @@ -16,7 +16,7 @@ class Migration(migrations.Migration): ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False)), ('cable_end', models.CharField(max_length=1)), ('termination_id', models.PositiveBigIntegerField()), - ('cable', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='+', to='dcim.cable')), + ('cable', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='terminations', to='dcim.cable')), ('termination_type', models.ForeignKey(limit_choices_to=models.Q(models.Q(models.Q(('app_label', 'circuits'), ('model__in', ('circuittermination',))), models.Q(('app_label', 'dcim'), ('model__in', ('consoleport', 'consoleserverport', 'frontport', 'interface', 'powerfeed', 'poweroutlet', 'powerport', 'rearport'))), _connector='OR')), on_delete=django.db.models.deletion.PROTECT, related_name='+', to='contenttypes.contenttype')), ], options={ diff --git a/netbox/dcim/models/cables.py b/netbox/dcim/models/cables.py index 372bf7655..8090258f4 100644 --- a/netbox/dcim/models/cables.py +++ b/netbox/dcim/models/cables.py @@ -117,9 +117,9 @@ class Cable(NetBoxModel): ]) if terminations: assert self.pk is None - self.terminations = terminations + self._terminations = terminations else: - self.terminations = [] + self._terminations = [] @classmethod def from_db(cls, db, field_names, values): @@ -128,8 +128,6 @@ class Cable(NetBoxModel): """ instance = super().from_db(db, field_names, values) - instance.terminations = CableTermination.objects.filter(cable=instance) - # instance._orig_termination_a_type_id = instance.termination_a_type_id # instance._orig_termination_a_ids = instance.termination_a_ids # instance._orig_termination_b_type_id = instance.termination_b_type_id @@ -205,7 +203,7 @@ class CableTermination(models.Model): cable = models.ForeignKey( to='dcim.Cable', on_delete=models.CASCADE, - related_name='+' + related_name='terminations' ) cable_end = models.CharField( max_length=1, diff --git a/netbox/dcim/signals.py b/netbox/dcim/signals.py index 30e3b6ed0..48fb2f25c 100644 --- a/netbox/dcim/signals.py +++ b/netbox/dcim/signals.py @@ -82,13 +82,13 @@ def update_connected_endpoints(instance, created, raw=False, **kwargs): # Save any new CableTerminations CableTermination.objects.bulk_create([ - term for term in instance.terminations if not term.pk + term for term in instance._terminations if not term.pk ]) # Split terminations into A/B sets and save link assignments # TODO: Update link peers _terms = defaultdict(list) - for t in instance.terminations: + for t in instance._terminations: if t.termination.cable != instance: t.termination.cable = instance t.termination.save()