mirror of
https://github.com/netbox-community/netbox.git
synced 2026-01-16 08:42:17 -06:00
#21150 fix filterset UI performance
This commit is contained in:
@@ -188,13 +188,11 @@ class FilterModifierMixin:
|
|||||||
key = f'{model._meta.app_label}.{model._meta.model_name}'
|
key = f'{model._meta.app_label}.{model._meta.model_name}'
|
||||||
filterset_class = registry['filtersets'].get(key)
|
filterset_class = registry['filtersets'].get(key)
|
||||||
|
|
||||||
filterset = filterset_class() if filterset_class else None
|
|
||||||
|
|
||||||
for field_name, field in self.fields.items():
|
for field_name, field in self.fields.items():
|
||||||
lookups = self._get_lookup_choices(field)
|
lookups = self._get_lookup_choices(field)
|
||||||
|
|
||||||
if filterset:
|
if filterset_class:
|
||||||
lookups = self._verify_lookups_with_filterset(field_name, lookups, filterset)
|
lookups = self._verify_lookups_with_filterset(field_name, lookups, filterset_class)
|
||||||
|
|
||||||
if len(lookups) > 1:
|
if len(lookups) > 1:
|
||||||
field.widget = FilterModifierWidget(
|
field.widget = FilterModifierWidget(
|
||||||
@@ -213,8 +211,14 @@ class FilterModifierMixin:
|
|||||||
|
|
||||||
return []
|
return []
|
||||||
|
|
||||||
def _verify_lookups_with_filterset(self, field_name, lookups, filterset):
|
def _verify_lookups_with_filterset(self, field_name, lookups, filterset_class):
|
||||||
"""Verify which lookups are actually supported by the FilterSet."""
|
"""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 = []
|
verified_lookups = []
|
||||||
|
|
||||||
for lookup_code, lookup_label in lookups:
|
for lookup_code, lookup_label in lookups:
|
||||||
@@ -223,7 +227,7 @@ class FilterModifierMixin:
|
|||||||
else:
|
else:
|
||||||
filter_key = f'{field_name}__{lookup_code}' if lookup_code != 'exact' else field_name
|
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))
|
verified_lookups.append((lookup_code, lookup_label))
|
||||||
|
|
||||||
return verified_lookups
|
return verified_lookups
|
||||||
|
|||||||
Reference in New Issue
Block a user