Arthur 4 недель назад
Родитель
Сommit
ef45059502
1 измененных файлов с 11 добавлено и 7 удалено
  1. 11 7
      netbox/utilities/forms/mixins.py

+ 11 - 7
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