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

Tom*_*mer 5 django list view

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

Mar*_*mro 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() ),
)
Run Code Online (Sandbox Code Playgroud)

其他一切都在模板文件中完成。下面的代码显示一个包含 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>
Run Code Online (Sandbox Code Playgroud)