【发布时间】:2017-03-08 01:08:56
【问题描述】:
我有以下型号:
class Book(models.Model):
name = models.CharField()
authors = models.ManyToManyField('Author', blank=True, verbose_name=_('authors'))
class Author(models.Model):
name = models.CharField()
def my_books(self) -> List[Book]:
return Book.objects.filter(authors__exact=self.id).all()
我正在通过DetailView展示作者和相关书籍:
class AuthorDetailView(generic.DetailView):
model = Author
在模板中,我通过author.my_books() 方法访问给定作者的书籍 - 但这会从数据库中提取所有行。
我想对书的行进行分页。
我如何做到这一点?
更新:根据this answer,我需要继承ListView 而不是DetailView,并覆盖get_queryset() 来获取书籍。有什么办法可以在 DetailView 中做到这一点?
【问题讨论】:
-
DetailView中没有处理分页的代码。您当然可以将pagination tools 与DetailView一起使用,但Daniel 建议使用ListView对我来说听起来更好。 -
你是如何循环浏览模板文件中的书籍的?
-
对不起。我的模板中有一些错误的代码导致所有书籍都被退回...... :(
标签: django pagination master-detail