django:使用搜索自动生成列表视图(管理员风格)

Posted

技术标签:

【中文标题】django:使用搜索自动生成列表视图(管理员风格)【英文标题】:django: auto generate list view with search (admin style) 【发布时间】:2010-05-17 13:32:00 【问题描述】:

为模型生成列表视图的最简单方法是什么,带有可点击的标题和搜索(过滤器)字段,或多或少类似于管理站点?我读了一些关于通用视图的文章,但我没有看到一个简单的解决方案。

【问题讨论】:

【参考方案1】:

通用视图非常适合创建这种功能。然后可以使用 jQuery 和 DataTables 等 javascript 插件在客户端执行表格排序、搜索和分页。

为此,您需要定义一个通用视图并将其包含在 urls.py 中:

from django.views.generic import ListView
from exampleapp.models import BlogPost

class BlogPostListView(ListView):
    """"Class that extends generic ListView"""

    template_name = "list.html" 

    def get_queryset(self):
        return BlogPost.objects.filter(published=True)


urlpatterns = patterns('',

    url('^list/$', BlogPostListView.as_view() ),
)

其他一切都在模板文件中完成。下面的代码显示一个包含 3 列的表并初始化 DataTables 插件。将添加分页按钮和搜索输入,并且可以单击标题单元格以按给定列排序。

<script type="text/javascript" language="javascript" src="http://datatables.net/release-datatables/media/js/jquery.js"></script>
<script type="text/javascript" language="javascript" src="http://datatables.net/release-datatables/media/js/jquery.dataTables.js"></script>
<script>
$(document).ready(function()
    // Initalize DataTables on <table> tag with id="example"
    $('#example').dataTable();  
);
</script>


<table id="example">
    <thead>   <!-- header row -->
        <tr>
            <td>ID</td>
            <td>column1</td>
            <td>column2</td>
        </tr>
    </thead>
    <tbody>   <!-- data  -->
    % for item in object_list.all %
        <tr>
            <td> item.id </td>
            <td> item.column1 </td>
            <td> item.column2 </td>
        </tr>
    % endfor %
    </tbody>
</table>

【讨论】:

以上是关于django:使用搜索自动生成列表视图(管理员风格)的主要内容,如果未能解决你的问题,请参考以下文章

使用 django 表单提交传递变量

管理员中的 Django 自定义列表视图

如何获取django应用程序中所有视图的列表?

Django:在过滤器和搜索中使用 JSONField 属性

django 管理界面 - 如何在更改列表视图中折叠/展开对象详细信息?

基于 Django 类的视图和通用视图详细信息使用