diff --git a/netbox/netbox/filtersets.py b/netbox/netbox/filtersets.py index e3bd33298..41a22859d 100644 --- a/netbox/netbox/filtersets.py +++ b/netbox/netbox/filtersets.py @@ -180,9 +180,11 @@ class BaseFilterSet(django_filters.FilterSet): # create the new filter with the same type because there is no guarantee the defined type # is the same as the default type for the field resolve_field(field, lookup_expr) # Will raise FieldLookupError if the lookup is invalid - for field_to_remove in ('choices', 'null_value'): - existing_filter_extra.pop(field_to_remove, None) - filter_cls = django_filters.BooleanFilter if lookup_expr == 'empty' else type(existing_filter) + filter_cls = type(existing_filter) + if lookup_expr == 'empty': + filter_cls = django_filters.BooleanFilter + for field_to_remove in ('choices', 'null_value'): + existing_filter_extra.pop(field_to_remove, None) new_filter = filter_cls( field_name=field_name, lookup_expr=lookup_expr,