From a9c1c8968e21787ba4f2c9f7abb273b8746e2560 Mon Sep 17 00:00:00 2001 From: thatmattlove Date: Tue, 7 Sep 2021 18:43:36 -0700 Subject: [PATCH] Return cleaned `null_option` value as `None` in dynamic multi-select field --- netbox/utilities/forms/fields.py | 2 +- netbox/utilities/forms/utils.py | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/netbox/utilities/forms/fields.py b/netbox/utilities/forms/fields.py index cf7bff14f..2561c2e22 100644 --- a/netbox/utilities/forms/fields.py +++ b/netbox/utilities/forms/fields.py @@ -485,5 +485,5 @@ class DynamicModelMultipleChoiceField(DynamicModelChoiceMixin, forms.ModelMultip """ if self.null_option is not None and settings.FILTERS_NULL_CHOICE_VALUE in value: value = [v for v in value if v != settings.FILTERS_NULL_CHOICE_VALUE] - return [self.null_option, *value] + return [None, *value] return super().clean(value) diff --git a/netbox/utilities/forms/utils.py b/netbox/utilities/forms/utils.py index c0c14c80d..3297f7955 100644 --- a/netbox/utilities/forms/utils.py +++ b/netbox/utilities/forms/utils.py @@ -121,7 +121,6 @@ def get_selected_values(form, field_name): form.is_valid() filter_data = form.cleaned_data.get(field_name) field = form.fields[field_name] - # Selection field if hasattr(field, 'choices'): try: @@ -130,12 +129,12 @@ def get_selected_values(form, field_name): if hasattr(field, 'null_option'): # If the field has a `null_option` attribute set and it is selected, # add it to the field's grouped choices. - if field.null_option is not None and field.null_option in filter_data: + if field.null_option is not None and None in filter_data: grouped_choices.append((field.null_option, field.null_option)) choices = dict(unpack_grouped_choices(grouped_choices)) return [ - label for value, label in choices.items() if str(value) in filter_data + label for value, label in choices.items() if str(value) in filter_data or None in filter_data ] except TypeError: # Field uses dynamic choices. Show all that have been populated.