跳转到主要内容

Django-refinery是一个可重用的Django应用程序,允许用户动态地过滤查询集。

项目描述

允许用户根据模型字段过滤查询集,类似于Django管理员的list_filter界面。提供了一个名为FilterTool的帮助类,它将(默认情况下)将过滤器映射到模型字段并为查询集操作创建表单。帮助类支持一个界面,任何使用过Django的ModelForm的人都会感到熟悉。

作者::

Jacob Radford

许可证::

BSD

示例用法

给定一个Product模型,您可以创建一个用于它的FilterTool,如下所示:

import refinery

class ProductFilterTool(refinery.FilterTool):
    class Meta:
        model = Product
        fields = ['name', 'price']

然后,在您的视图中,您可以这样做:

def product_list(request):
    filtertool = ProductFilterTool(request.GET or None)
    return render_to_response('product/product_list.html',
        {'filtertool': filtertool})

然后,在您的模板中:

<form action="" method="get">
    {{ filtertool.form.as_p }}
    <input type="submit" />
</form>
<h2>Products</h2>
<ul>
  {% for obj in filtertool %}
      <li>{{ obj.name }} - ${{ obj.price }}</li>
  {% endfor %}
</ul>

对于更复杂的用法或定制需求,请参阅项目文档。

需求

  • Python 2.5+

  • Django 1.3+

安装

  • pip install -U django-refinery

  • refinery添加到您的INSTALLED_APPS

要安装 django-refinery 的开发版本,请运行 pip install django-refinery==dev

文档

有关使用示例的详细信息,请参阅 docs 文件夹或在 readthedocs 上阅读

  • 使用示例

  • 贡献

  • 与其他应用程序的集成

  • 项目背景

  • 低级 API

  • 创建自定义过滤器

错误

如果您想通过发布详细的错误报告、提出新功能或建议改进文档来帮助 django-refinery 的开发,请使用 问题跟踪器。如果您想自己修复它,感谢您! 分支项目,进行更改并 发送拉取请求。请创建一个问题来讨论您的计划。

背景

django-refinery 基于 django-filter,这是由 Alex Gaynor 创建的应用程序。有关完整的项目历史和贡献者列表,请参阅项目文档。

路线图

  • 彻底修改和扩展文档

  • 彻底修改和扩展测试套件

  • 重构通用类视图(查看 ListView 的分页)

  • 允许与 django-floppyforms 集成

  • 允许与 django-crispy-forms 集成

  • 允许对非必填字段进行筛选,提供筛选未设置记录的选项。(即 FK 为 null)

  • 允许抽象排序值,以避免在 GET 参数中传递内部信息(即 user__username

  • 考虑调整 LinkWidget 和整体行为以支持类似于 django-easyfilters 的筛选,或者也许可以删除小部件?

资源

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关 安装软件包 的更多信息。

源分布

django-refinery-0.1.tar.gz (23.0 kB 查看散列

上传时间

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页