首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django-filter没有过滤

django-filter没有过滤
EN

Stack Overflow用户
提问于 2018-05-30 21:39:26
回答 1查看 393关注 0票数 0

我使用django-filter和django-tables2。这张表工作得很好,可以在屏幕上显示记录。但是当我点击Filter按钮时,什么也没有发生。请参阅下面的代码和图像。

tables.py

代码语言:javascript
复制
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

filters.py

代码语言:javascript
复制
class servicofilter(django_filters.FilterSet):

    dat_servico = django_filters.DateFromToRangeFilter()

    class Meta:
        model = servico
        fields = ['num_protocolo', 'dat_servico', 'statusservico', 'tiposervico', 'usuario']

views.py

代码语言:javascript
复制
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

代码语言:javascript
复制
{% 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>

EN

回答 1

Stack Overflow用户

发布于 2018-05-31 00:35:18

再看一下,我认为您需要将table = servicotable(f.queryset)更改为table = servicotable(f.qs)

FilterSet.qs是具有过滤的查询集的属性。queryset存储传递给对象的查询集,因此在本例中为all()

(顺便说一句,我认为对对象名称使用驼峰式大小写可能会对您的代码有所帮助,以便将它们与函数区分开来。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50606216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档