Arthur 1 dzień temu
rodzic
commit
deeb6f1489
1 zmienionych plików z 8 dodań i 13 usunięć
  1. 8 13
      netbox/circuits/models/circuits.py

+ 8 - 13
netbox/circuits/models/circuits.py

@@ -456,19 +456,14 @@ class CircuitTermination(
         if circuit is None:
             return
 
-        if only_if_references is not None:
-            fields = {
-                field_name: value
-                for field_name, value in fields.items()
-                if getattr(circuit, f'{field_name}_id') == only_if_references
-            }
-
-        # Skip fields which already hold the intended value
-        fields = {
-            field_name: value
-            for field_name, value in fields.items()
-            if getattr(circuit, f'{field_name}_id') != value
-        }
+        def needs_write(field_name, value):
+            current = getattr(circuit, f'{field_name}_id')
+            if current == value:
+                return False
+            # Match what on_delete=SET_NULL would have cleared
+            return only_if_references is None or current == only_if_references
+
+        fields = {name: value for name, value in fields.items() if needs_write(name, value)}
         if not fields:
             return