【问题标题】:Django admin search/filter functionality as a page tableDjango 管理员搜索/过滤功能作为页表
【发布时间】:2011-11-03 17:47:30
【问题描述】:

我想知道是否有一种方法可以在常规视图中使用 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 样式的可选配置

Alasdair 的 django-tables2 仅匹配第一个和第二个条件。

【问题讨论】:

  • 目前1.7的状态如何?

标签: django django-admin


【解决方案1】:

您提到的 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 应用程序,允许用户过滤 动态查询集。它需要 Python 2.4 或更高版本。对于使用和 安装说明参考docs目录。

Django-filter 可用于生成类似于 Django 的接口 管理员的list_filter 接口。它有一个与 Django 非常相似的 API ModelForms.

【讨论】:

  • 是的,我不想重用 ModelAdmin,我想要一些具有 ModelAdmin 功能的公共视图。
  • django-filter 是我想要的!现在我将它与 django-pagination 一起使用,但会检查它是否也适用于 django-tables2。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-25
    • 1970-01-01
    • 2011-01-23
    • 1970-01-01
    • 1970-01-01
    • 2016-03-10
    • 2013-01-07
    • 1970-01-01
    相关资源
    最近更新 更多