2009-11-09 4 views
43

Django администратора сайта использует действительно прохладный виджет:Django multi-select виджет?

enter image description here

Как я могу использовать этот виджет в своих собственных приложениях? Я не вижу ничего подобного listed here.

ответ

43

От docs:

приложение Django администратора определяет количество настраиваемых виджетов для календарей, процеживают выборов, и так далее. Эти виджеты определяют требования к мультимедиа, а Django Admin использует пользовательские виджеты вместо значений по умолчанию для Django. Шаблоны администратора будут включать только те мультимедийные файлы, которые необходимы для визуализации виджетов на любой заданной странице.

Если вам нравятся виджеты, которые использует приложение Django Admin, не стесняйтесь использовать их в своем приложении! Все они хранятся в django.contrib.admin.widgets.

В этом случае необходимо, чтобы виджет FilteredSelectMultiple. Для того, чтобы использовать его, применить виджет на поле формы, как так:

my_field = forms.ModelMultipleChoiceField(queryset=MyModel.objects.all(), widget=FilteredSelectMultiple("verbose name", is_stacked=False)) 

Убедитесь, что включает в себя форму media в шаблоне, как она должна включать в себя несколько JS-файлов.

+0

Hrm ... не хочет работать по какой-либо причине. Все JS есть, но по какой-то причине он не конвертирует selectbox. http://7src.com/~mnb2/a3/access – mpen

+0

Можете ли вы вставить код на http://dpaste.com? – Bartek

+0

Это дикое предположение, но попробуйте установить второй аргумент (для переменной 'is_stacked') в значение False. Посмотрев на код, похоже, что это может повлиять на отображение двух ящиков или нет. К сожалению, я не могу проверить это сам прямо сейчас, поэтому я просто просматриваю код хе-хе :) – Bartek

Смежные вопросы