我在基于类的视图中使用了ListView,我想知道是否有办法通过排序来显示模板上的模型对象集.这就是我目前的情况:

我的看法是:

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

型号ProductReview具有date_created字段.我想把日期按降序排列.我怎样才能做到这一点呢?

推荐答案

为视图设置ordering属性.

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

如果你总是对固定日期字段进行排序,你可能会对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"

请注意,除非将allow_future设置为True,否则ArchiveIndexView不会显示具有将来日期的对象.

Django相关问答推荐

Django中的Sync_to_Async修饰器、异步视图

如何在Django表单中传递self.请求数据?

Django:添加第二个';详细';用于检索额外信息的视图

Django ImproperlyConfigured: AUTH_USER_MODEL指向尚未安装的模型'users.User'

如何创建复杂的查询?| ChartJS 和 Django

无法使用 django-filters 进行过滤

Django 如何知道我的数据库的路径?

django 创建多种类型用户的最佳方法

如何获得用户权限?

可插拔应用程序的Django默认设置约定?

Django 密码以什么格式存储在数据库中?

使用 lambda 作为属性的默认值时,Django 1.7.1 Makemigrations 失败

测试 Django 信号的正确方法

Django REST Framework 和 FileField 绝对 url

在 Django 中使用 AuthenticationForm

Django - 如何从模型实例中获取管理员 URL

Django:从视图中添加 non_field_error?

Django 覆盖模型 Clean() 与 Save()

如何向所有 Django 响应添加 HTTP 标头

get_or_create() 是否必须立即保存?