我有一个这样的列表视图:
:=
当我转到网址时,出现此错误:
class IncidentListView(generic.ListView):
model = Incident
paginate_by = 3
def get_queryset(self,request):
order_by = request.GET.get('order_by', 'defaultOrderField')
return model.objects.all().order_by(order_by)
我在做什么错?我要这样做,所以您可以单击创建新列表视图的排序链接,但不确定如何处理。
作为参考,我遵循了建议here
答案 0 :(得分:3)
像这样尝试:
class IncidentListView(generic.ListView):
model = Incident
paginate_by = 3
def get_queryset(self):
order_by = self.request.GET.get('order_by', 'defaultOrderField')
return model.objects.all().order_by(order_by)
答案 1 :(得分:1)
在基于类的视图中,您始终可以通过self.request
引用请求。但是,为了使所有其他魔术(如分页)正常工作,您不应该完全替换get_queryset
方法。最好改写专用的钩子get_ordering
。它应该返回一个字符串或字符串元组,该字符串或字符串元组将被模型的查询集的order_by
接受:
class IncidentListView(generic.ListView):
model = Incident
paginate_by = 3
def get_ordering(self):
return self.request.GET.get('order_by', 'defaultOrderField')