我试图找到一个优雅的解决方案,而无需使用JQuery或JS。无论如何,是否可以执行选择模型中选项的所有字段?
我不太热衷于使用:django checkbox select all
我看到它暗示:https://groups.google.com/forum/#!topic/django-users/dzdiZ9TLR5g
但是从来没有能够找到任何容易让我直接从Django提供选择的东西。有谁知道这是否可以开启?或者JS是执行此操作的唯一方法吗?
我之前注意到这个答案:select all rows in django_tables2
但有没有办法避免这种方法,因为我可能不知道字段的原因 - 因此,如果我在每个页面上有多个字段 - 即多个名称。
答案 0 :(得分:1)
你在Django中编写的任何解决方案都会涉及覆盖小部件渲染,以输出包含javascript / jquery的html。我不认为有任何问题。
编辑:回答你的评论,我个人这样做的方法是创建一个SlaveCheckboxWidget,可以做一些简单的继承标准复选框小部件,但将css类名改为“slave-checkbox”或类似,然后有一个MasterCheckboxWidget,它包含一些jquery来选择所有(".slave-checkbox")
并切换它们。
有关自定义django小部件here
的更多信息答案 1 :(得分: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>
我为django扩展了这个解决方案: How to implement "select all" check box in HTML?