django-autocomplete-light icon indicating copy to clipboard operation
django-autocomplete-light copied to clipboard

Correctly render selected choice for ListSelect2 grouped fields

Open j-bernard opened this issue 3 years ago • 2 comments
trafficstars

ListSelect2 does not correctly render the selected choices when used with groups.

This snippet works for groups but I did not make a PR as I'll let the way to detect or declare grouped vs non-grouped to you.

class LgrGroupedListSelect2(autocomplete.ListSelect2):

    def filter_choices_to_render(self, selected_choices):
        # dal.widget.WidgetMixin.filter_choices_to_render does not handle correctly grouped lists
        ch = []
        for group in self.choices:
            c = [c for c in group[1] if str(c[0]) in selected_choices]
            ch.extend(c)
        self.choices = ch

j-bernard avatar Jun 21 '22 14:06 j-bernard

Dois it work better with Select2GroupListView ?

https://django-autocomplete-light.readthedocs.io/en/master/api.html#dal_select2.views.

jpic avatar Sep 09 '22 20:09 jpic

I'm using Select2GroupListView to get the list of values to display but the problem is with the field widget.

My form field is as follow:

autocomplete.Select2ListChoiceField(label='',
                                    required=True,
                                    widget=LgrGroupedListSelect2(url='autocomplete-url',
                                                                 attrs={'data-allow-clear': 'false'}))

and autocomplete-url is a Select2GroupListView. If I replace LgrGroupedListSelect2 with autocomplete.ListSelect2 it will not display the groups correctly.

j-bernard avatar Oct 06 '22 01:10 j-bernard