2024-05-14 13:45:16 发布
网友
我在基于类的视图中使用ListView,我想知道是否有一种方法可以通过排序在模板上显示模型对象集。到目前为止,我所拥有的是:
ListView
我的观点:
class Reviews(ListView): model = ProductReview paginate_by = 50 template_name = 'review_system/reviews.html'
模型ProductReview有一个date_created字段。我想按降序排列日期。我怎样才能做到这一点?
ProductReview
date_created
设置视图的^{}属性。
class Reviews(ListView): model = ProductReview paginate_by = 50 template_name = 'review_system/reviews.html' ordering = ['-date_created']
如果需要动态更改顺序,可以使用get_ordering。
get_ordering
class Reviews(ListView): ... def get_ordering(self): ordering = self.request.GET.get('ordering', '-date_created') # validate ordering here return ordering
如果您总是对固定日期字段进行排序,那么您可能会对^{}感兴趣。
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"
请注意,ArchiveIndexView在将来不会显示带有日期的对象,除非将allow_future设置为True。
ArchiveIndexView
allow_future
True
为什么不重写^{}方法,如下所示:
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')
设置视图的^{} 属性。
如果需要动态更改顺序,可以使用
get_ordering
。如果您总是对固定日期字段进行排序,那么您可能会对^{} 感兴趣。
请注意,
ArchiveIndexView
在将来不会显示带有日期的对象,除非将allow_future
设置为True
。为什么不重写^{} 方法,如下所示:
相关问题 更多 >
编程相关推荐