Django管理搜索/过滤功能作为页表

时间:2011-11-03 17:47:31

标签: django django-admin

我想知道是否有办法在常规视图中使用Django Admin的过滤/排序/分页/搜索功能。

我的意思是我有一个模型,上面有一些字段。我想要一个“搜索”表单,其中字段的定义很像使用admin.ModelAdmin。用户可以搜索(使用提供的字段),按值过滤,通过结果表的页面分页等。所有这些都没有我的工作量,例如。只是配置应该在表单中使用哪些字段。像这样:

class SchoolAdmin(ModelAdmin):
    list_display = ('id', 'name', )
    list_display_links = ('name', )
    search_fields = ('name', )
    list_filter = ('type', )

有这样的东西吗?或者我必须自己编码吗?

编辑:

我需要来自这样的插件/应用程序的功能是:

  1. 以表格形式显示数据
  2. 按列排序
  3. 过滤(例如“仅显示具有X = Y的行”)
  4. 按栏目搜索
  5. 可选择配置类似于ModelAdmin样式
  6. Alasdair的django-tables2仅匹配第一和第二条件。

2 个答案:

答案 0 :(得分:19)

你提到的django功能在Django 1.3中的自定义视图中并不是真正可重用的。 django-developers组最近讨论了splitting out admin functionality使其可重用的问题。

我遇到了两个可能对您有用的项目,django-tables2django-filter。他们都提供略有不同的东西,我想你正在寻找两者的混合物。

的django-tables2

  

django-tables2简化了将数据集转换为HTML表的任务。它具有对分页和排序的原生支持。它适用于HTML表格,django.forms为HTML表单做什么

的django过滤

  

Django-filter是一个可重用的Django应用程序,允许用户过滤   queryset动态。它需要Python 2.4或更高版本。用法和用途   安装说明请参阅docs目录。

     

Django-filter可用于生成类似于Django的接口   admin的list_filter界面。它有一个非常类似于Django的API   ModelForms

答案 1 :(得分:2)

为了扩展Alasdair的答案,我添加了一个简单的模块,为django-tables2添加了简单的过滤功能。请参阅https://github.com/benjiec/django-tables2-simplefilter