我想知道是否有办法在常规视图中使用Django Admin的过滤/排序/分页/搜索功能。
我的意思是我有一个模型,上面有一些字段。我想要一个“搜索”表单,其中字段的定义很像使用admin.ModelAdmin。用户可以搜索(使用提供的字段),按值过滤,通过结果表的页面分页等。所有这些都没有我的工作量,例如。只是配置应该在表单中使用哪些字段。像这样:
class SchoolAdmin(ModelAdmin):
list_display = ('id', 'name', )
list_display_links = ('name', )
search_fields = ('name', )
list_filter = ('type', )
有这样的东西吗?或者我必须自己编码吗?
编辑:
我需要来自这样的插件/应用程序的功能是:
Alasdair的django-tables2仅匹配第一和第二条件。
答案 0 :(得分:19)
你提到的django功能在Django 1.3中的自定义视图中并不是真正可重用的。 django-developers组最近讨论了splitting out admin functionality使其可重用的问题。
我遇到了两个可能对您有用的项目,django-tables2和django-filter。他们都提供略有不同的东西,我想你正在寻找两者的混合物。
django-tables2简化了将数据集转换为HTML表的任务。它具有对分页和排序的原生支持。它适用于HTML表格,django.forms为HTML表单做什么
Django-filter是一个可重用的Django应用程序,允许用户过滤 queryset动态。它需要Python 2.4或更高版本。用法和用途 安装说明请参阅docs目录。
Django-filter可用于生成类似于Django的接口 admin的
list_filter
界面。它有一个非常类似于Django的APIModelForms
。
答案 1 :(得分:2)
为了扩展Alasdair的答案,我添加了一个简单的模块,为django-tables2添加了简单的过滤功能。请参阅https://github.com/benjiec/django-tables2-simplefilter。