2014-01-07 4 views
0

Я пытаюсь найти элегантное решение без использования JQuery или JS. Есть ли в любом случае, что можно выполнить выбор всех полей, которые являются параметрами в модели?Выбор всех флажков в Django

Я не так сильно, чтобы использовать: django checkbox select all

Я видел это намекают: https://groups.google.com/forum/#!topic/django-users/dzdiZ9TLR5g

Но не смог найти ничего, что бы легко позволит мне обеспечить отборное все непосредственно из Джанго. Кто-нибудь знает, можно ли это включить? Или JS - единственный способ выполнить это?

Я отмечаю этот ответ раньше: select all rows in django_tables2

Но есть способ избежать этого подхода, потому что я не знаю, что почему поля - значит, если у меня есть более одного поля на каждой странице - то есть несколько имен ,

ответ

1

Любое решение, которое вы пишете в Django, будет включать в себя переопределение виджета для вывода html, включающего javascript/jquery. Я не думаю, что это можно обойти.

Редактировать: чтобы ответить на ваш комментарий, как я лично сделал это, создайте SlaveCheckboxWidget, который может сделать что-то простое наследование стандартного виджета флажка, но изменить имя класса css на «slave-checkbox» или аналогичный, тогда есть MasterCheckboxWidget, который включает в себя бит jquery, чтобы выбрать все (".slave-checkbox") и переключить их.

Подробнее о настройке Джанго виджетов here

+0

Благодарности - вы знаете о каких-либо хороших решений, которые будут обрабатывать несколько полей на каждой форме? – disruptive

1

Вот мое простое решение с несколькими формами и нескольких полей:

 {% for form in formset %} 

    <div> 
     {% for field in form %} 

     {{ field }} 

     {% for check in field|slice:":1" %} 
     <input type="checkbox" onClick="toggle(this,'{{ check.name }}')"/> 
     Select All 
     {% endfor %} 
     {% endfor %} 
    </div> 

    {% endfor %} 

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

JS код:

<script type="text/javascript" > 
function toggle(source,name) { 
    checkboxes = document.getElementsByName(name); 
    for (var i = 0, 
     n = checkboxes.length; i < n; i++) { 
     checkboxes[i].checked = source.checked; 
    } 
} 
</script> 

Я продлил это решение для Джанго: How to implement "select all" check box in HTML?

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