我ListView在基于类的视图中使用,我想知道是否有办法通过对模板进行排序来显示模板上的模型对象集.这是我到目前为止:
我的观点:
class Reviews(ListView):
model = ProductReview
paginate_by = 50
template_name = 'review_system/reviews.html'
Run Code Online (Sandbox Code Playgroud)
该模型ProductReview有一个date_created字段.我想按降序排列日期.我怎样才能做到这一点?
Ala*_*air 33
设置ordering视图的属性.
class Reviews(ListView):
model = ProductReview
paginate_by = 50
template_name = 'review_system/reviews.html'
ordering = ['-date_created']
Run Code Online (Sandbox Code Playgroud)
如果您需要动态更改排序,则可以get_ordering改为使用.
class Reviews(ListView):
...
def get_ordering(self):
ordering = self.request.GET.get('ordering', '-date_created')
# validate ordering here
return ordering
Run Code Online (Sandbox Code Playgroud)
如果您总是对固定日期字段进行排序,您可能会对此感兴趣ArchiveIndexView.
from django.views.generic.dates import ArchiveIndexView
class Reviews(ArchiveIndexView):
model = ProductReview
paginate_by = 50
template_name = 'review_system/reviews.html'
date_field = "date_created"
Run Code Online (Sandbox Code Playgroud)
请注意,ArchiveIndexView除非您设置allow_future为,否则将来不会显示具有日期的对象True.
为什么不重写这样的get_queryset方法:
class Reviews(ListView):
model = ProductReview
paginate_by = 50
template_name = 'review_system/reviews.html'
def get_queryset(self):
return YourModel.objects.order_by('model_field_here')
Run Code Online (Sandbox Code Playgroud)