Проблема django-autocomplete-light! Новая версия chrome

У меня есть django приложение с python 3.7 и Django 2.2.10, которое использует django admin, с materialize css subscript для шаблонов. После последних обновлений Chrome, поведение форм в модале показывает проблему рендеринга.
Виджет был настроен под формы:

class Select2Widget(Select2WidgetMixin):

    def _get_language_code(self):
        return 'pt-BR'

    @property
    def media(self):

        """Return JS/CSS resources for the widget."""
        return forms.Media(
            js=(
                   'autocomplete_light/jquery.init.js',
                   STATIC_URL + 'js/select2.full.js',
                   # 'vendor/select2/dist/js/select2.full.js',
                   'autocomplete_light/autocomplete.init.js',
                   'autocomplete_light/forward.js',
                   'autocomplete_light/select2.js',
                   'autocomplete_light/jquery.post-setup.js',
               ),
            css={
                'screen': (
                    'vendor/select2/dist/css/select2.min.css',
                    'admin/css/autocomplete.css',
                    'autocomplete_light/select2.css',
                ),
            },
        )

    autocomplete_function = 'select2'

"""
retorna queryset na ordem que foi selecionado no field
"""
class QuerySetSelect(WidgetMixin):

    def filter_choices_to_render(self, selected_choices):
        preserved = Case(*[When(pk=pk, then=pos) for pos, pk in enumerate(selected_choices)])
        """Filter out un-selected choices if choices is a QuerySet."""
        self.choices.queryset = self.choices.queryset.filter(pk__in=[c for c in selected_choices if c]).order_by(preserved)


class ModelSelect2(QuerySetSelectMixin, Select2Widget, forms.Select):
    ...


class ModelSelect2Multiple(QuerySetSelectMixin, Select2Widget, forms.SelectMultiple):
    ...


class Select2Multiple(Select2Widget, SelectMultiple):
    ...

Используйте ниже в формах

Вот в чем проблема... В других браузерах все работает

Я пробовал использовать другие библиотеки, но это не помогает. Я искал в сообществах и не нашел ответа на эту проблему.

Django-autocomplete-light не работает в хроме с 24.07.2024, потому что в последних версиях Chrome отключено событие DOMNodeInserted. doc

DOMNodeInserted событие было устаревшим с 2011 года и теперь окончательно удалено.

Вы все еще можете использовать Firefox, все работает нормально.

p.s. Я рекомендую использовать стандартный Django-autocomplete, появившийся в Django v.2, который очень легко реализовать вместо DAL.

p.p.s Я обновлю этот ответ советами по рефакторингу, потому что я как раз сейчас нахожусь в процессе рефакторинга DAL в большом старом Django-проекте.

p.p.p.s. У меня есть рефакторинговая версия для обычного django autocomplete.js, но она понадобится вам только после перехода с DAL на DA. Вы можете найти ее в моем докладе о django-admin здесь.

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