给定一个 models.py:
class Partner(models.Model):
... (fields irrelevant to this example)
class Lecture(models.Model):
... (other fields not relevant to this example)
partner models.ForeignKey(Partner)
我每个都有一个 ListView ,每个都有一个 DetailView (工作正常)。
问题是在“合作伙伴详细信息视图”页面上,我有讲座列表。在许多情况下,这个列表可能会很长(例如,>200),并且利益相关者希望对其进行分页。我在 ListView 页面上的分页没有任何问题(这很简单),但我似乎无法在合作伙伴的 DetailView 页面上弄清楚如何在他们的讲座列表上分页。
我希望在 Django 文档中看到如下代码:
class PartnerDetailView(DetailView):
model = Partner
paginate_using = Lecture # (or something like self.lecture ?)
paginate_by = 20
因此,DetailView 将作用于单个 Partner 对象,但(很容易)允许对 Lecture FK 结果进行分页。
有支持吗?或者它是否需要更多的自定义视图代码(可能将“页面”变量放入 **kwargs 中以获取 get_context_data() 并基于该变量创建子集)?
这似乎是 CBV 下非常常见的情况,所以我很困惑为什么搜索没有找到任何示例。
更新:我应该想到,执行此操作的一个简单方法是仅将一个“页面”片段添加到引用 DetailView 的 url() 条目,并使用它在 FK 对象上创建分页子集。
请注意,这也可能是解决“如何对 FormView 的结果进行分页”问题的可行方法......
您最好的选择可能是子类化 ListView 而不是 DetailView,并覆盖get_queryset
获取合作伙伴的讲座。您可以将合作伙伴对象添加到get_context_data
如果你需要的话也可以。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)