mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-19 09:53:34 -06:00
Fixes #1513: Correct filtering of custom field choices
This commit is contained in:
parent
85347d9675
commit
a0b93bb4df
@ -19,17 +19,28 @@ class CustomFieldFilter(django_filters.Filter):
|
|||||||
super(CustomFieldFilter, self).__init__(*args, **kwargs)
|
super(CustomFieldFilter, self).__init__(*args, **kwargs)
|
||||||
|
|
||||||
def filter(self, queryset, value):
|
def filter(self, queryset, value):
|
||||||
|
|
||||||
# Skip filter on empty value
|
# Skip filter on empty value
|
||||||
if not value.strip():
|
if not value.strip():
|
||||||
return queryset
|
return queryset
|
||||||
# Treat 0 as None for Select fields
|
|
||||||
try:
|
# Selection fields get special treatment (values must be integers)
|
||||||
if self.cf_type == CF_TYPE_SELECT and int(value) == 0:
|
if self.cf_type == CF_TYPE_SELECT:
|
||||||
return queryset.exclude(
|
try:
|
||||||
custom_field_values__field__name=self.name,
|
# Treat 0 as None
|
||||||
)
|
if int(value) == 0:
|
||||||
except ValueError:
|
return queryset.exclude(
|
||||||
pass
|
custom_field_values__field__name=self.name,
|
||||||
|
)
|
||||||
|
# Match on exact CustomFieldChoice PK
|
||||||
|
else:
|
||||||
|
return queryset.filter(
|
||||||
|
custom_field_values__field__name=self.name,
|
||||||
|
custom_field_values__serialized_value=value,
|
||||||
|
)
|
||||||
|
except ValueError:
|
||||||
|
return queryset.none()
|
||||||
|
|
||||||
return queryset.filter(
|
return queryset.filter(
|
||||||
custom_field_values__field__name=self.name,
|
custom_field_values__field__name=self.name,
|
||||||
custom_field_values__serialized_value__icontains=value,
|
custom_field_values__serialized_value__icontains=value,
|
||||||
|
Loading…
Reference in New Issue
Block a user