Как использовать optgroups с FilteredSelectMultiple в админке Django?

Я использовал optgroups на моей странице Django Admin с SelectWidget, но когда я перешел на FilteredSelectWidget, они больше не работают. Я заметил, что до загрузки JS для FilteredSelectWidget у SelectWidget есть optgroups, но после загрузки JS они исчезают.

Например, если у меня есть миксин формы следующего вида:

class SelectMixin(forms.ModelForm):
    select_field = forms.ModelMultipleChoiceField(
        queryset=ModelA.objects.all(),
        required=False,
        widget=FilteredSelectMultiple("Select Field", is_stacked=False)
    )

    def __init__(self, *args, **kwargs):
        super(SelectMixin, self).__init__(*args, **kwargs)

        self.fields['select_field'].choices = (('Group 1' ((1, 'item 1'), (2, 'item 2'))), ('Group 2' ((3, 'item 3'), (4, 'item 4'))))

Это работает, когда widget установлен в SelectWidget, но когда он установлен как указано выше, он больше не работает. Несмотря на то, что он по-прежнему генерирует правильные группировки через метод optgroup.

Похоже, что JS из FilteredSelectWidget перезаписывает их. Кто-нибудь нашел способ обойти это? Мне нужен виджет выбора, с помощью которого я могу легко отменить выбор, а фильтрация - это приятный бонус.

Вернуться на верх