Django Refinery是一个可重用的Django应用程序,允许用户动态过滤QuerySet。
django-refiner的Python项目详细描述
允许用户根据模型的字段筛选QuerySet,类似于 django管理员的list_filter接口。一个FilterToolhelper类 它将(默认情况下)将筛选器映射到模型字段并创建 用于查询集操作的窗体。helper类支持接口 任何使用过djangoModelForm的人都会觉得很熟悉。
Author: | Jacob Radford |
---|---|
Licence: | BSD |
示例用法
给定一个Product模型,您可以使用:
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>
有关更复杂的使用或自定义需求,请参阅项目文档。
要求
- Python2.5+
- Django 1.3+
安装
- pip install -Udjango-refinery
- 将refinery添加到INSTALLED_APPS
要安装Django炼油厂的in-development version,请运行pip install django-refinery==dev。
错误
如果你想帮助Django炼油厂的发展, 发布详细的错误报告、提出新功能或建议 文档改进,使用issue tracker。如果你想的话 你自己修,谢谢!Fork the project,进行更改并 send a pull request。请创建一个问题来讨论您的计划。
背景
django炼油厂基于django-filter,一个创建的应用程序 通过Alex Gaynor。对于完整的项目历史和贡献者列表, 请参阅项目文档。
路线图
- 彻底检查并扩展文档
- 彻底检查并扩展测试套件
- 重构泛型类视图(查看listview的分页)
- 允许集成django floppyforms
- 允许集成Django Crispy表单
- 允许对非必需字段进行筛选,并提供选项 筛选未设置的记录的选项。(即fk为空)
- 允许对用于避免传递内部 get params中的信息(即user__username)
- 研究调整LinkWidget和总体行为以支持 像django-easyfilters那样过滤,或者可能删除小部件?