【发布时间】:2021-06-23 05:17:43
【问题描述】:
我想在 Django 的 ListView 中实现分页。我可以在函数视图中重写视图,但我想知道如何在类视图中进行分页练习。
我想在这里做的是获取登录用户过滤的数据,并以 20 分页显示它们(数字无关紧要)。例如,如果 Alex 当前正在登录,我想显示 Alex 的数据库中以 20 为分页的数据。
但是,当我编写下面的代码时,我收到一个错误“一旦获取切片,就无法过滤查询”。所以,现在在 HTML 文件上,有所有用户的数据,比如 Alex 的数据、Bob 的数据、Lisa 的数据,以及所有其他用户的数据。
我尝试将paginate_by = 20 放在 get_context_data 函数下,但不起作用。我什至认为我可能不会将 paginate_by 与 get_context_data 一起使用。
class FoodList(LoginRequiredMixin, ListView):
model = Food
template_name = 'base/all_foods.html'
context_object_name = 'foods'
ordering = ['-created']
paginate_by = 20
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['color'] = 'red'
context['foods'] = context['foods'].filter(user=self.request.user)
如果我需要提供更多信息,请告诉我。 任何建议都是有帮助的,并提前感谢您的帮助!
【问题讨论】:
标签: python python-3.x django django-views