Django-refinery是一个可重用的Django应用程序,允许用户动态地过滤查询集。
项目描述
允许用户根据模型字段过滤查询集,类似于Django管理员的list_filter界面。提供了一个名为FilterTool的帮助类,它将(默认情况下)将过滤器映射到模型字段并为查询集操作创建表单。帮助类支持一个界面,任何使用过Django的ModelForm的人都会感到熟悉。
- 作者::
- 许可证::
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 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 413974bba999f2b115bf95a4fa2895c054b867e88f70cc03b33999ff640208b3 |
|
MD5 | 7214c41471a406d359054ea6e432ec9f |
|
BLAKE2b-256 | 89c0e6761667e8f45d913c8df67319285ab7eddacf3d7ade95fc67e501a44e45 |