Как использовать группы выбора с помощью параметра FilteredSelectMultiple администратора Django?

#django #django-forms #django-admin

Вопрос:

Я использовал optgroups на своей странице администратора Django с a 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 перезаписывает их. Кто-нибудь нашел способ обойти это? Мне нужен виджет выбора, с помощью которого я могу легко отменить выбор, и фильтрация-приятный бонус.