有Django列表视图模型排序吗?

2024-05-14 13:45:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我在基于类的视图中使用ListView,我想知道是否有一种方法可以通过排序在模板上显示模型对象集。到目前为止,我所拥有的是:

我的观点:

class Reviews(ListView):
    model = ProductReview
    paginate_by = 50
    template_name = 'review_system/reviews.html'

模型ProductReview有一个date_created字段。我想按降序排列日期。我怎样才能做到这一点?


Tags: 对象方法模型视图模板bymodel排序
2条回答

设置视图的^{}属性。

class Reviews(ListView):
    model = ProductReview
    paginate_by = 50
    template_name = 'review_system/reviews.html'

    ordering = ['-date_created']

如果需要动态更改顺序,可以使用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

为什么不重写^{}方法,如下所示:

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

相关问题 更多 >

    热门问题