基于字母表的分页(A-Z)

时间:2014-02-18 02:18:01

标签: python django pagination

我有一个简单的联系人应用程序,我想根据名字字母表对联系人列表进行分页。

这是我的views.py

def contacts(request):
    contact_list = Contact.objects.filter(user=request.user).order_by('first_name')
    return render(request, 'contact/contact.html', {'contact_list': contact_list})

这是我的模板

<ul>
    {% for contact in contact_list %}
        <li><a href="/contacts/{{ contact.id }}/">{{ contact.first_name }}</a></li>
    {% endfor %}
</ul>

Django中有默认方式吗?有Django pagination但我认为只会跨页面拆分数据。最简单的方法是什么?

2 个答案:

答案 0 :(得分:1)

默认情况下,似乎不存在字母分页符。像https://djangosnippets.org/snippets/1364/&lt;&lt;&lt;&lt;这一个展示了手工制作的实现。

但是,实现起来并不困难:你可以将自己建立在startswith关键字上,并且:

pages = [myQuerySet.filter(myfield__istartswith=i) for i in "ABC...XYZ"] #full alphabet here

(实际上,让myQuerySet成为contact_list;让myfield实际上是first_name)。

答案 1 :(得分:0)

我已经完成了一次,通过在我的模型中添加一个字母字段并手动“分页”。这引起了很多外国字母表的有趣情况。发现这很有用:https://pypi.python.org/pypi/Unidecode

没有找到任何“更聪明”的方法去做。但我有兴趣听到更多“即插即用”解决方案......