django:自动生成带搜索的列表视图(管理员样式)

时间:2010-05-17 13:32:00

标签: django list view

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

1 个答案:

答案 0 :(得分:4)

通用视图非常适合创建这种功能。然后可以使用jQueryDataTables等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>