From ef4505950299857ec928bb687d88028ff907cbf7 Mon Sep 17 00:00:00 2001 From: Arthur Date: Thu, 15 Jan 2026 13:27:34 -0800 Subject: [PATCH] #21150 fix filterset UI performance --- netbox/utilities/forms/mixins.py | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/netbox/utilities/forms/mixins.py b/netbox/utilities/forms/mixins.py index ca943e088..057584c6b 100644 --- a/netbox/utilities/forms/mixins.py +++ b/netbox/utilities/forms/mixins.py @@ -188,13 +188,11 @@ class FilterModifierMixin: key = f'{model._meta.app_label}.{model._meta.model_name}' filterset_class = registry['filtersets'].get(key) - filterset = filterset_class() if filterset_class else None - for field_name, field in self.fields.items(): lookups = self._get_lookup_choices(field) - if filterset: - lookups = self._verify_lookups_with_filterset(field_name, lookups, filterset) + if filterset_class: + lookups = self._verify_lookups_with_filterset(field_name, lookups, filterset_class) if len(lookups) > 1: field.widget = FilterModifierWidget( @@ -213,8 +211,14 @@ class FilterModifierMixin: return [] - def _verify_lookups_with_filterset(self, field_name, lookups, filterset): - """Verify which lookups are actually supported by the FilterSet.""" + def _verify_lookups_with_filterset(self, field_name, lookups, filterset_class): + """Verify which lookups are actually supported by the FilterSet. + + Args: + field_name: The name of the form field + lookups: List of (lookup_code, lookup_label) tuples to verify + filterset_class: The FilterSet class (not instance) to check against + """ verified_lookups = [] for lookup_code, lookup_label in lookups: @@ -223,7 +227,7 @@ class FilterModifierMixin: else: filter_key = f'{field_name}__{lookup_code}' if lookup_code != 'exact' else field_name - if filter_key in filterset.filters: + if filter_key in filterset_class.base_filters: verified_lookups.append((lookup_code, lookup_label)) return verified_lookups