我有一个简单的联系人应用程序,我想根据名字字母表对联系人列表进行分页。
这是我的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但我认为只会跨页面拆分数据。最简单的方法是什么?
答案 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
没有找到任何“更聪明”的方法去做。但我有兴趣听到更多“即插即用”解决方案......