mirror of
https://github.com/netbox-community/netbox.git
synced 2026-04-17 14:39:56 +02:00
Fixes #13606: Fix filtering by null for multiselect custom fields
This commit is contained in:
@@ -9,6 +9,7 @@ from drf_spectacular.types import OpenApiTypes
|
||||
__all__ = (
|
||||
'ContentTypeFilter',
|
||||
'MACAddressFilter',
|
||||
'MultiValueArrayFilter',
|
||||
'MultiValueCharFilter',
|
||||
'MultiValueDateFilter',
|
||||
'MultiValueDateTimeFilter',
|
||||
@@ -85,6 +86,21 @@ class MultiValueTimeFilter(django_filters.MultipleChoiceFilter):
|
||||
field_class = multivalue_field_factory(forms.TimeField)
|
||||
|
||||
|
||||
@extend_schema_field(OpenApiTypes.STR)
|
||||
class MultiValueArrayFilter(django_filters.MultipleChoiceFilter):
|
||||
field_class = multivalue_field_factory(forms.CharField)
|
||||
|
||||
def __init__(self, *args, lookup_expr='contains', **kwargs):
|
||||
# Set default lookup_expr to 'contains'
|
||||
super().__init__(*args, lookup_expr=lookup_expr, **kwargs)
|
||||
|
||||
def get_filter_predicate(self, v):
|
||||
# If filtering for null values, ignore lookup_expr
|
||||
if v is None:
|
||||
return {self.field_name: None}
|
||||
return super().get_filter_predicate(v)
|
||||
|
||||
|
||||
class MACAddressFilter(django_filters.CharFilter):
|
||||
pass
|
||||
|
||||
|
||||
Reference in New Issue
Block a user