From 2993322958e99c6f20ff7587fa4a9845877c25a1 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Fri, 6 Jan 2023 18:06:00 -0400 Subject: [PATCH] fix: Listify initial field value when SearchableField.max_entries == 1 (#4951) * fix: Listify initial field value when SearchableField.max_entries == 1 * fix: Don't convert initial=None to initial=[None] in has_changed() --- ietf/utils/fields.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ietf/utils/fields.py b/ietf/utils/fields.py index 806137e12..39f97535a 100644 --- a/ietf/utils/fields.py +++ b/ietf/utils/fields.py @@ -320,6 +320,13 @@ class SearchableField(forms.MultipleChoiceField): return objs.first() if self.max_entries == 1 else objs + def has_changed(self, initial, data): + # When max_entries == 1, we behave like a ChoiceField so initial will likely be a single + # value. Make it a list so MultipleChoiceField's has_changed() can work with it. + if initial is not None and self.max_entries == 1 and not isinstance(initial, (list, tuple)): + initial = [initial] + return super().has_changed(initial, data) + class IETFJSONField(jsonfield.fields.forms.JSONField): def __init__(self, *args, empty_values=jsonfield.fields.forms.JSONField.empty_values,