我希望通过Django-filter在我返回的表中有一个checkboxcolumn,然后通过复选框选择某些行,然后对这些行执行某些操作。
这是Django-filter:django-filter.readthedocs.io/en/1.1.0这是在Django-tables2中使用的checkboxcolumn的一个例子:stackoverflow.com/questions/10850316 / ...
我的问题是:我可以使用checkboxcolumn来表示通过Django-filter返回的表吗?
由于
答案 0 :(得分:0)
从django-tables2的角度来看,django-filter的作用是提供不同的(过滤的)查询集。 django-tables2不关心谁组成了查询集,它只是迭代它并使用模型从查询集中渲染行。
因此,如果您是表的复选框列,或者使用django-filter,django-tables2将只呈现它获得的任何查询集。
如果您想将检查过的记录用于某些自定义过滤器,则必须进行一些手动编码,但不支持开箱即用。
简短回答:是的,您可以将django-tables2与CheckboxColumn
一起使用django-filter。
答案 1 :(得分:0)
完整的工作代码:
filters.py
:
from project_django.models import SomeModel
import django_filters
class UserFilter(django_filters.FilterSet):
class Meta:
model = SomeModel
fields = ['jobnumber', ]
views.py
:
def custom_table(request):
user_list = SomeModel.objects.all()
data = request.GET.copy()
if len(data) == 0:
data['jobnumber'] = 0
user_filter = UserFilter(data, queryset=user_list)
table1 = JobTable(user_filter.qs)
# WORKING: custom table with checkbox
RequestConfig(request).configure(table1)
# WORKING: custom table with checkbox
return render(request, 'index.html', {'table1': table1, 'filter': user_filter})
tables.py
:
import django_tables2 as tables
from .models import SomeModel
class JobTable(tables.Table):
selection = tables.CheckBoxColumn(accessor='pk')
#jobnumber = tables.Column()
class Meta:
model = SomeModel
index.html
:
{% load widget_tweaks %}
{% block content %}
<form method="get">
<div class="well">
<h4 style="margin-top: 0">Filter</h4>
<div class="row">
<div class="form-group col-sm-4 col-md-3">
{{ filter.form.as_p }}
<button type="submit">Search</button>
</div>
</div>
</div>
</div>
</form>
<form action="roll.html" method="post">
{% render_table table1 %}
<input type="submit">
</form>