Django日期查询从最新到最旧

Django date query from newest to oldest

我正在从头开始构建我的第一个 Django 程序,并且 运行 在尝试将项目从最新到最旧打印到屏幕上时遇到了麻烦。 我的模型在数据库中填充了一个自动日期时间字段,如下所示:

型号

from django.db import models
from django.contrib.auth.models import User
from django.conf import settings
from django.utils import timezone

class TaskItem(models.Model):
    taskn = models.CharField(max_length = 400)
    usern = models.ForeignKey(User)
    #Created field will add a time-stamp to sort the tasks from recently added to oldest
    created_date = models.DateTimeField('date created', default=timezone.now)

    def __str__(self):
        return self.taskn

可以用哪一行代码来按从新创建到最旧的顺序对这些信息进行排序或打印?

想在这个调用中实现它:

taskitems2 = request.user.taskitem_set.all().latest()[:3]
ordered_tasks = TaskItem.objects.order_by('-created_date')

order_by() 方法用于对查询集进行排序。它有一个参数,即查询集排序所依据的属性。在此键前加上 - 以相反的顺序排序。

顺便说一句,您还可以使用 Django 的 created_at 字段:

ordered_tasks = TaskItem.objects.order_by('-created_at')

您可以在模型 Meta class 中设置顺序。这将是对象的默认排序,用于获取对象列表。

class TestModel(models.Model):
    ...
    created_at = models.DateField()
    ....

    class Meta:
       ordering = ['-created_at']

或者您可以对特定查询集应用排序。 TestModel.objects.order_by('-created_at')