python - 在 get_context_data 中更改查询集后分页不起作用
问题描述
分页工作正常,直到我将reverse
arg 添加到 QS 以在反向模式下排序查询集。之后分页就坏了。我可以get()
在那里使用函数并对其进行分页,但我认为对于这个问题应该是更好的解决方案。谢谢
模型.py:
class Log(models.Model):
user = models.ForeignKey('auth.User')
comment = models.CharField()
date_add = models.DateTimeField()
class Meta:
ordering = ['-date_add']
视图.py:
class LogView(ListView):
model = UserLog
template_name = 'log.html'
context_object_name = 'log_list'
paginate_by = 13
def get_queryset(self):
return Log.objects.filter(user=self.request.user).all()
def get_context_data(self, *, object_list=None, **kwargs):
context = super(LogView, self).get_context_data(**kwargs)
if 'reverse' in self.request.GET:
context['log_list'] = Log.objects.filter(user=self.request.user).all().order_by('date_add')
return context
解决方案
将运行查询集的代码移动到get_queryset
,以便它在查询集分页之前运行。
def get_queryset(self):
queryset = Log.objects.filter(user=self.request.user).all()
if 'reverse' in self.request.GET:
queryset = queryset.order_by('date_add')
return queryset
推荐阅读
- json - 如何从 POSTing text/turtle 返回到 Blazegraph?
- android - 无法在android中使用jobDispatcher创建作业
- r - 在 R 中按 3 列将数据框拆分为所有可能的数据框组合
- javascript - 让堆栈导航器始终呈现 initialRoute
- matlab - 从 94*263 特征向量中选择特征时,MATLAB 序列化时出错
- android - 如何在android中制作这样的径向浮动动作按钮?
- .net - IIS 7.5 .NET 共享 DLL 访问被拒绝错误
- spring-security - SAML 断言失败
- css - 浮动在标题中,导航列表和浏览器边缘之间没有间隙
- javascript - jQuery
- 事件没有触发