Django-AlphaFilter提供了一个类似于date_hierarchy的按字母顺序过滤的管理组件,并提供了一个可用于其他地方的模板标签。
项目描述
Django AlphaFilter被设计为像Django默认的date_hierarchy管理过滤一样工作。它将可点击的字母放置在日期层次结构相同的位置 - 结果列表的顶部。
1.0版本中的变更 * 只支持Django 1.9、1.10和1.11 * 支持2.7和3.6版本的Python * 添加了Tox测试配置
0.7版本中的变更
为模板标签添加了strip_params参数,以删除外部查询参数。
Django 1.5兼容
由于Django的聚合中的错误,回退到Django 1.4中检索字母的先前方法。
修复了urls中“&”的编码。
将unfiltered_queryset添加到上下文中(感谢Ales Zabala Alava: https://github.com/shagi)
0.6版本中的变更
切换到Django查询集来检索字母。(感谢Ales Zabala Alava: https://github.com/shagi)
Django 1.4兼容
0.5版本中的变更
添加了一个新的模板标签,用于在普通模板中使用查询集和字段渲染字母过滤器,并可选地指定模板。
0.4版本中的变更
添加了指定第三方应用以应用字母过滤器而不需要修改代码的能力(例如 django.contrib.auth)。使用 ALPHAFILTER_ADMIN_FIELDS 设置来实现此功能。
现在包含文档说明!
0.3 版本的变更
ModelAdmin 类现在可以指定自己的 DEFAULT_ALPHABET 来替代全局设置。
DEFAULT_ALPHABET 现在可以是一个可调用的对象
安装
最简单的方法是使用 pip
pip install django-alphafilter
如果您下载了源代码,可以通过运行 setup.py 脚本来进行安装
cd /path/to/django-alphafilter/ python setup.py install
将 'alphafilter' 添加到项目配置文件 settings.py 中,这样 Django 就能找到模板和模板标签。
默认字母表
默认字母表是显示在管理界面中的字符列表,即使该字符没有数据也会显示。随着数据的增加,字母表中的字母将被启用。任何不在默认字母表中的字符,但存在于数据中,将被动态添加。
由于涉及语言正确设计字母表的问题,默认字母表是一个名为 DEFAULT_ALPHABET 的设置。默认设置是 ASCII 字母表和数字。可以将 DEFAULT_ALPHABET 设置为一个字符串、列表、元组或可调用对象。
如果您只想使用 ASCII 字符,不要使用数字
DEFAULT_ALPHABET = u'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
德语字母表
DEFAULT_ALPHABET = u'0123456789A\xc4BCDEFGHIJKLMNO\xd6PQRS\xdfTU\xdcVWXYZ'
冰岛语字母表
DEFAULT_ALPHABET = u'0123456789A\xc1BD\xd0E\xc9FGHI\xcdJKLMNO\xd3PRSTU\xdaVXY\xdd\xde\xd6'
您可以通过在 ModelAdmin 类中添加一个 DEFAULT_ALPHABET 属性,在模型级别覆盖 DEFAULT_ALPHABET。例如
class TestNameAdmin(admin.ModelAdmin): model = TestName alphabet_filter = 'sorted_name' # A blank string only shows the characters in the database DEFAULT_ALPHABET = u''
字母表的顺序不会保持与输入相同,它将通过 Python 的列表排序方法进行排序。
在模型上使用字母过滤器
在模型的 admin.py 中,将 alphabet_filter 设置为字符字段的名称。例如
alphabet_filter = 'name'
您还必须为模型(或应用程序)创建一个模板,以覆盖管理员的 change_list.html 模板。
在您的项目模板目录中,您需要创建一个 admin 目录,以及一个名为应用程序的目录,可选地还有模型的名称。例如,如果您在名为 cooltags 的应用程序的 Tag 模型上添加过滤器,目录结构将如下所示
MyProject templates admin cooltags tag
创建一个名为 change_list.html 的文档,并将其放入应用程序目录(templates/admin/cooltags),以使其适用于该应用程序中的所有模型,或者将其放入模型目录(templates/admin/cooltags/tag)以使其仅适用于该模型。
change_list.html 文档应只包含一行
{% extends "alphafilter/change_list.html" %}