我有一些包含一些列的表。一列是复选框列。 那么,我怎样才能总结出数量"复选列列的列是否已选中? 如果有人能帮助我,我感激不尽。
答案 0 :(得分:0)
django-tables2 docs on CheckBoxColumn
mention:
您可能希望可以在呈现的表中选择多个复选框,然后执行一些操作。未实现此功能。如果您希望实际发生某些事情,则需要自己实施。
因此django-tables2没有内置任何内容,我们必须自己编写一些内容。这更多的是JavaScript / HTML问题,但是无论如何,让我们看看是否可以为该模型创建表:
class Country(models.Model):
name = models.CharField(max_length=100)
population = models.PositiveIntegerField()
这是一个基本表,通过向其中一列添加页脚参数来向表添加空页脚。稍后我们将使用此页脚来放入计算出的人口总数。
class CheckboxTable(tables.Table):
select = tables.CheckBoxColumn(empty_values=(), footer='')
population = tables.Column(attrs={'cell': {'class': 'population'}})
class Meta:
model = Country
template_name = 'django_tables2/bootstrap.html'
fields = ('select', 'name', 'population')
现在是模板。我使用jQuery来快速创建一个函数来计算总和。每次在其中一个复选框上以及在页面加载上触发change
事件时,都会执行此功能。
{% load django_tables2 %}
{% render_table table %}
<script src="//code.jquery.com/jquery.min.js"></script>
<script>
$(function () {
// calculate the sum of the population column for the selected rows.
function update_sum() {
var sum = 0;
// loop over each checkbox within <tbody>
$('tbody input[type=checkbox]').each(function () {
// if the checkbox is checked
if ($(this).is(':checked')) {
// find the contents of the population column, convert
// it to integer and add it to the total.
sum += parseInt($(this).parents('tr').find('.population').html());
}
});
// add the sum to the footer cell in the population column.
$('tfoot .population').html(sum);
}
// update the sum after each change
$('tbody input[type=checkbox]').on('change', update_sum);
// update the sum initially.
update_sum();
});
</script>
我added code similar to this到django-tables2示例应用程序。