我使用django-filter和django-tables2。这张表工作得很好,可以在屏幕上显示记录。但是当我点击Filter按钮时,什么也没有发生。请参阅下面的代码和图像。
tables.py
class servicotable(tables.Table):
class Meta:
model = servico
fields = (
'id',
'dat_servico',
'tiposervico',
'num_protocolo',
)
class filteredservicolistview(SingleTableMixin, FilterView):
table_class = servicotable
model = servico
filterset_class = servicofilterfilters.py
class servicofilter(django_filters.FilterSet):
dat_servico = django_filters.DateFromToRangeFilter()
class Meta:
model = servico
fields = ['num_protocolo', 'dat_servico', 'statusservico', 'tiposervico', 'usuario']views.py
def consulta_create(request, id=None):
queryset = servico.objects.all()
f = servicofilter(request.GET, queryset=queryset)
table = servicotable(f.queryset)
table.paginate(page=request.GET.get('page', 1), per_page=25)
RequestConfig(request).configure(table)
context = {
"filter": f,
"lista": table,
}
return render(request, 'consulta/consultateste.html', context)consultateste.html
{% load render_table from django_tables2 %}
{% load bootstrap3 %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{% if filter %}
<form action="" method="get" class="form form-inline">
{% bootstrap_form filter.form layout='inline' %}
{% bootstrap_button 'filter' %}
</form>
{% endif %}
{% render_table lista 'django_tables2/bootstrap.html' %}
</body>
</html>

发布于 2018-05-31 00:35:18
再看一下,我认为您需要将table = servicotable(f.queryset)更改为table = servicotable(f.qs)。
FilterSet.qs是具有过滤的查询集的属性。queryset存储传递给对象的查询集,因此在本例中为all()!
(顺便说一句,我认为对对象名称使用驼峰式大小写可能会对您的代码有所帮助,以便将它们与函数区分开来。)
https://stackoverflow.com/questions/50606216
复制相似问题