首页 文章

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

提问于
浏览
0

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

这是我的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 回答

  • 1

    似乎默认情况下不存在字母顺序的分页符 . 像https://djangosnippets.org/snippets/1364/ <<<这一页显示手工制作的实现 .

    但是,实现起来并不难:您可以将自己 Build 在startswith关键字上,并且:

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

    (让myQuerySet实际上是contact_list;让myfield实际上是first_name) .

  • 0

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

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

相关问题