django alphafilter提供了一个用于按字母顺序筛选的管理小部件,其工作方式类似于日期层次结构和模板标记,可在其他地方使用。

django-alphafilter的Python项目详细描述


django alphafilter的设计与django的默认date_hierarchyadmin过滤器类似。它将一个可点击的字母表放在与日期层次结构相同的位置-在结果列表的顶部。

在1.0中的更改 *仅支持django 1.9、1.10和1.11 *支持Python2.7和3.6 *添加了毒性测试配置

0.7中的更改:

  • 在模板标记中添加了一个strip_params参数以去掉外部查询参数。
  • Django 1.5兼容。
  • 回到django 1.4中以前的检索字母的方法,因为django的聚合中存在错误。
  • 修复了URL中“&;”的编码。
  • 向上下文添加了unfiltered_queryset(感谢ales zabala alava:https://github.com/shagi

0.6中的更改:

0.5中的更改:

  • 添加了一个新的模板标记,以使用queryset和field以及可选的指定模板在普通模板中呈现字母表过滤器。

0.4中的更改:

  • 添加了指定第三方应用程序以应用字母表筛选器而无需修改该代码(例如django.contrib.auth)的功能。为此使用ALPHAFILTER_ADMIN_FIELDS设置。
  • 现在包括文档!

0.3中的更改:

  • ModelAdmin类现在可以指定自己的DEFAULT_ALPHABET来使用,而不是全局设置。
  • DEFAULT_ALPHABET现在可以是可调用的

安装

  1. 最简单的方法是使用pip

    pip install django-alphafilter
    
  2. 如果下载了源代码,可以通过运行setup.py脚本来安装它:

    cd /path/to/django-alphafilter/
    python setup.py install
    
  3. '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的list sort方法排序的。

在型号上使用字母表过滤器

在模型的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" %}

注意

不能将此模板放在admin目录中,因为它会导致继承的无限循环。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java文本视图未显示在linearLayout中   java优化的json文件读写方式   java在列表值中时如何在hql中使用like查询?   netbeans向JavaDB添加外键   ubuntu 18.04 java版本显示为10,但安装了java 11   使用SpringJava配置引用具有依赖项的bean   java如何过滤数据库输出?(安卓 PHP)   java TextView在运行时扩展   java中日期时间的日期转换   java Android:将UTF8数据发送到MySQL   glassfish服务器中的java启用comet   javascript通过Java方法重定向到另一个servlet路径   java创建给定类的实例   java空手道:在我的CSV文件中,列的行数不同。读取数据时,为行数较少的列添加空值   java GWT身份验证用户会话   java Gui JCombobox文本变得模糊   在节点删除时调用java Swing JTree addTreeSelectionListener