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')