django过滤器没有过滤

django过滤器没有过滤,django,django-tables2,django-filters,Django,Django Tables2,Django Filters,我使用django过滤器和django-tables2。 这张桌子运转良好,在屏幕上显示记录。 但当我点击过滤按钮时,什么也没发生。 请参阅下面的代码和图片 tables.py class servicotable(tables.Table): class Meta: model = servico fields = ( 'id', 'dat_servico',

我使用django过滤器和django-tables2。 这张桌子运转良好,在屏幕上显示记录。 但当我点击过滤按钮时,什么也没发生。 请参阅下面的代码和图片

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 = servicofilter
过滤器.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>

再看一看,我认为您需要更改table=servicotablef.querysetto table=servicotablef.qs

FilterSet.qs是具有已筛选查询集的属性。queryset存储传递到对象中的queryset,因此在本例中,所有


作为补充说明,我认为使用camelcasing作为对象名来区分它们与函数可能会对您的代码有所帮助。

所说的“不过滤”,是指当您单击“过滤”按钮时,什么都没有发生吗?如果是这样,请检查页面上是否存在导致JS失败的Javascript错误。我的ConsultStateSte.htmlGreat中没有任何Javascript!!!!!成功了!!!!!谢谢现在,我有一个字段可以选择一行,但我不知道如何在我的视图中获取de id number.py。选择一行是什么意思?您似乎拥有该字段,以便有人可以输入该项的ID,并将其筛选到该行。queryset中的任何对象都有一个ID。如果对第一个项queryset[0]进行切片,则ID,您将获得其数据库id号,除非您另有说明,否则它将自动递增。在my views.py中,如果请求,我将执行if request.method='POST':printids当有人选择一行时,您是否将此作为表单提交?在这种情况下,您需要将其作为POST参数传递,并从POST字典中获取它。你应该看到