我对我的 Web 应用程序有一个要求,那就是创建按姓氏分页的员工 ListViews。
要列出的类如下所示:
class Person(models.Model):
first_name = models.CharField(blank=True)
last_name = models.CharField(blank=True)
# etc.
我也有一个带有 Mixin 的 ListView:
class PersonMixin(object):
def get_queryset(self):
return Person.objects.order_by('last_name', 'first_name')
class PersonListView(PersonMixin, ListView):
paginate_by = settings.ARCHIVE_PAGE_SIZE
template_name = 'profile_list.html'
paginator_class = FamilyNamePaginator
最后,我重写了 Paginator 类。
class FamilyNamePaginator(Paginator):
def page(self, number):
page = super(FamilyNamePaginator, self).page(number)
return page
但显然,目前的行为太基本了。例如,我需要用“A ... MP Z”替换“第 1 页,共 6 页”,即姓氏首字母。我还没有找到任何文档指出如何自定义 Paginator 类,谁能指出我应该从哪里开始挖掘?
提前致谢 :-)