使用 Django 无限分页进行过滤

Posted

技术标签:

【中文标题】使用 Django 无限分页进行过滤【英文标题】:Filtering with Django endless pagination 【发布时间】:2016-11-30 04:56:12 【问题描述】:

其他人以前曾问过此问题,但未提供任何答案。实际上,目标是使用 Django 的 Twitter 风格的无限分页来实现搜索功能。用户修改了一些界面字段,并且无限表在考虑新用户输入的情况下重新初始化。

我有一个 模板 A,它是包含嵌入式 模板 B 的主模板,用作我的无尽表格的容器。当用户向下滚动时,表格会加载附加数据:

<select id = 'parameter' class="form-control input-sm">
    <!-- my options -->
</select>
<table>
   <thead>...</thead>
   <tbody>
         % include 'my_app/template_B.html' %
   </body>
</table>

模板B的结构似乎与问题无关,所以我省略了。

初始化模板 A 的 Django 视图:

def my_view(request,\
            parameter_id = None,
            template='order_scheduler/template_A.html',\
            extra_context=None):
if parameter_id is None:
   # do smth
else:
   # do smth
return render_to_response(template,
                          context,
                          context_instance=RequestContext(request)): 

问题:当用户修改参数组合框的值而不刷新模板A时,如何重新初始化模板B中的无限表?

【问题讨论】:

【参考方案1】:

您可以根据 POST 中传递的参数创建一个呈现 template_B.html 的视图,然后在您的页面中:

    $(function() 
        var parameter = $('#parameter');
        parameter.on('change', function() 
            $.post("/your/viev/url", 'parameter': parameter.val(), function(response) 
                $('tbody').html(response);
            );
        );
    );

【讨论】:

以上是关于使用 Django 无限分页进行过滤的主要内容,如果未能解决你的问题,请参考以下文章

django-filter使用分页

当我在基于类的视图中应用过滤器时,如何在 django 中使用分页分页。网址总是不断变化我如何跟踪网址

DRF ---- 过滤组件 分页组件 过滤组件插件使用

有啥方法可以将过滤后的查询集传递给 Django 分页?

Django按条件过滤

Django ListView - 过滤和排序的表单