Usprawnianie pól wyboru za pomocą django-ajax-selects
19 September 2011
Comments
django-ajax-selects to aplikacja umożliwiająca zastąpienie np. w panelu admina list (pól select) dla ForeignKey i ManyToMany ajaksowymi widżetami z podpowiadaniem/wyszukiwaniem. Rozwiązuje to problem pól select z bardzo dużą ilością elementów (co spowalnia generowanie strony i jest trudne w użytku).

Instalacja
- Pobieramy paczkę django-ajax-selects ze strony projektu i instalujemy w systemie (python setup.py install)
- Pobieramy widżet jquery-plugin-autocomplete
- Do INSTALLED_APPS w settings.py dodajemy 'ajax_select'
- W szablonach musimy zaszyć następujące pliki statyczne:
- jquery-*.js
- jquery.autocomplete.js
- jquery.autocomplete.css
- ajax_select.js
- iconic.css (opcjonalne)
class Media:
js = [
'/site_media/jquery-1.5.min.js',
'/site_media/jquery-autocomplete/jquery.autocomplete.pack.js',
]
css = {
'all': [
'/site_media/jquery-autocomplete/jquery.autocomplete.css',
'/site_media/jquery-autocomplete/iconic.css']
}
Konfiguracja i użytkowanie
By wykorzystać django-ajax-selects w panelu admina musimy w settings.py zdefiniować zapytania jakie będą wykorzystywane do wyszukiwania rekordów. Zapytania te umieszczamy w słowniku AJAX_LOOKUP_CHANNELS, np:AJAX_LOOKUP_CHANNELS = {
'ajax_related_articles' : dict(model='pages.article',search_field='title'),
}
Reguła "ajax_related_articles" będzie szukała rekordów z modelu "article" w aplikacji "pages" po wartości pola "title".
Kolejny etap to podpięcie tej reguły do modelu. Robimy to w admin.py w klasie konfigurującej model dla panelu admina. Do klasy dodajemy coś takiego:form = make_ajax_form(Article, dict(related_articles='ajax_related_articles',))
Django-ajax-selects oferuje więcej - np. możliwość stosowania we własnych formularzach (nie tylko w panelu), czy też niestandardowe reguły wyszukiwania. Wszystko to opisane jest na stronie projektu.
RkBlog
Comment article