Просмотр исходного кода

fixes #4647 - caching invalidation related to assinging new IP addresses to interfaces

John Anderson 5 лет назад
Родитель
Сommit
14744da8f6
2 измененных файлов с 8 добавлено и 1 удалено
  1. 2 0
      docs/release-notes/version-2.8.md
  2. 6 1
      netbox/ipam/forms.py

+ 2 - 0
docs/release-notes/version-2.8.md

@@ -5,6 +5,8 @@ v2.8.5 (FUTURE)
 ### Bug Fixes
 ### Bug Fixes
 
 
 * [#3304](https://github.com/netbox-community/netbox/issues/3304) - Fix caching invalidation issue related to device/virtual machine primary IP addresses
 * [#3304](https://github.com/netbox-community/netbox/issues/3304) - Fix caching invalidation issue related to device/virtual machine primary IP addresses
+* [#4647](https://github.com/netbox-community/netbox/issues/4647) - Fix caching invalidation issue related to assinging new IP addresses to interfaces
+
 
 
 ---
 ---
 
 

+ 6 - 1
netbox/ipam/forms.py

@@ -618,7 +618,12 @@ class IPAddressForm(BootstrapMixin, TenancyForm, ReturnURLForm, CustomFieldModel
         if self.instance and self.instance.interface:
         if self.instance and self.instance.interface:
             self.fields['interface'].queryset = Interface.objects.filter(
             self.fields['interface'].queryset = Interface.objects.filter(
                 device=self.instance.interface.device, virtual_machine=self.instance.interface.virtual_machine
                 device=self.instance.interface.device, virtual_machine=self.instance.interface.virtual_machine
-            )
+            ).prefetch_related(
+                'device__primary_ip4',
+                'device__primary_ip6',
+                'virtual_machine__primary_ip4',
+                'virtual_machine__primary_ip6',
+            )  # We prefetch the primary address fields to ensure cache invalidation does not balk on the save()
         else:
         else:
             self.fields['interface'].choices = []
             self.fields['interface'].choices = []