Pull to refresh

Comments 12

Если уж публикуете код, выложите его на GitHub или Bitbucket

А ещё, посмотрите сюда. Похоже, вы этот проект не видели.
Автор умеет ими пользоваться.
Замечание верное. Выкладываю в общий доступ все-таки.

Поясню ход мыслей.
На странице бывает много независимых форм в разных местах.
Не хочу после каждой формы выводить {{form.media}}.

Загрузку всех скриптов всегда выношу в конце тэга «body»,
это действительно, ускоряет время отображения страницы (визуально).

В шаблон я предлагал вставить еще кусок шаблона (через include) с модальным окном,
куда загружается дерево иерархии через AJAX.

Можно было дерево загружать возле виджета,
вставлять этот контейнер скриптом после загрузки страницы.
Основная цель статьи не в том, чтоб предложить идеальное решение типа (скачай и забудь), а максимально простое для изучения внутри
Спасибо. Не видел. Вполне рабочий вариант, должен работать. Поставлю. Если все ок, выкину свой велосипед, пожалуй.
Нет, все-таки не выкину. Django-select2 не подходит.

При регистрации поля в замыкании или в Memcached, в виде ключа используется
github.com/applegrew/django-select2/blob/master/django_select2/fields.py#L50
name = kwargs.pop('auto_id', u"%s.%s" % (self.__module__, self.__class__.__name__))
Так django-select2 достает QuerySet на другой стороне AJAX-а

В нашем приложении каждый пользователь может увидеть разное количество опций одного и того же поля
в зависимости от ролей доступа, параметров документа, различных ограничений доступа.
А хранить копию каждого поле-проект-документ-пользователь замусорит систему и нужно думать о инвалидации кэша, к тому же (параметры у документа меняются и будут менятся список наложенных фильтров).

В этом приложении все более прозрачно.
При отрисовке, виджет выдирает наложенные фильтры из QuerySet-а и сохраняет их в параметрах,
которые каждый раз добавляются к AJAX-запросу.

Необходимости хранить QuerySet вообще нет. Все работает тупо и просто.
Можно открыть 10 документов на разных вкладках и получить разный набор опций для каждого.
Это могут сделать 5000 пользователей и ajax-обработчик будет корректно всех обслуживать.

С моим вариантом это будет работать, а с django-select2 нет.
Столкнулся с похожей проблемой, а рабочей альтернативы вроде как и нет. Вы свой код на Github/PyPi так и не выкладывали?
Не выкладывал.
Посчитал решение сильно тривиальным и слишком простым для того, чтобы куда-то его выкладывать.

Сейчас я практически не пишу под django, переключился на flask.
Проект, в который входит этот код целиком, я не могу выложить в открытый доступ, к сожалению.

Да и весь код, достаточный для воссоздания на вашей стороне, есть в статье.
Мне жаль, что потерялся файл в Google Disk (там все было).

Да и статья не претендует на готовое решение, оформленное в виде просто подключаемой библиотеки.
Она была скорее про то, что не так уж это все и сложно.

Попробуйте просмотреть эти куски кода и создать у себя модуль с виджетами, скрипт и обработчик поисковых запросов.

Если будут сложности, пишите в личку.
Все-таки, хотелось бы, чтоб вы немного поняли что это и с какой стороны к этому подходить.
Пользы будет намного больше, чем просто взять в виде либы (черного ящика).

Прямо сейчас мне немного стыдно за качество кода и концепцию вообще, все-таки статья довольно старая.

Сейчас такое же решение есть для Flask, но код я не могу выложить в общий доступ целиком.
Если кому-то интересно, могу похожую статью с общими принципами написать про Wtforms
Не хотелось городить свой велосипед, а чужие уже все попробовал. Придется, видимо, все таки свой :)
Спасибо. Интересная штука. Используем это.
UFO just landed and posted this here
Это виджеты для стандартных форм Django и предназначены для использования с формами Django.
В блоке «Использование» как раз пример использования одного из виджетов с формой Django.

Можете конкретизировать вопрос? Постараюсь ответить.
Sign up to leave a comment.

Articles