Python 是否有Django列表视图模型排序?
我在基于类的视图中使用Python 是否有Django列表视图模型排序?,python,django,Python,Django,我在基于类的视图中使用ListView,我想知道是否有一种方法可以通过排序来显示模板上的模型对象集。这就是我到目前为止所做的: 我的看法: class Reviews(ListView): model = ProductReview paginate_by = 50 template_name = 'review_system/reviews.html' 模型ProductReview有一个date\u created字段。我想把日期按降序排列。如何实现这一点?设置视图
ListView
,我想知道是否有一种方法可以通过排序来显示模板上的模型对象集。这就是我到目前为止所做的:
我的看法:
class Reviews(ListView):
model = ProductReview
paginate_by = 50
template_name = 'review_system/reviews.html'
模型ProductReview
有一个date\u created
字段。我想把日期按降序排列。如何实现这一点?设置视图的属性
class Reviews(ListView):
model = ProductReview
paginate_by = 50
template_name = 'review_system/reviews.html'
ordering = ['-date_created']
如果需要动态更改排序,可以使用
如果您总是对固定日期字段进行排序,您可能会对该字段感兴趣
请注意,
ArchiveIndexView
不会显示具有未来日期的对象,除非您将allow\u 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')
我将尝试此方法,但您的方法缺少一个def。此方法在呈现或执行时没有任何错误,但order\u by不起作用。@DeA重写
get\u queryset
并使用order\u by
应该起作用,虽然使用ListView
您可能更喜欢覆盖ordering
或get\u ordering
。这非常有效。我必须使用Case
,When
,Then
,Value
子句进行自定义排序,但我不能使用get\u ordering
。我喜欢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"
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')