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:在过滤器和搜索中使用 JSONField 属性