在Django中从数据库中获取模型的最后3个对象

gopyfrb3  于 2023-11-20  发布在  Go
关注(0)|答案(2)|浏览(131)

我在博客项目工作,我有'最后的帖子'在汽车类的职位部分,我想从数据库中获得我的模型的最后3个对象,并与上下文发送到模板。
'car_post':post.objects.filter(category__name = 'car')[:3]
我试过这段代码,但我认为它显示在数据库中的前3个职位
怎么办?

icnyk63a

icnyk63a1#

您可以使用**.reverse()**[Django-doc]来反转查询集:

post.objects.filter(category__name='car').reverse()[:3]

字符串
但很可能你可以更有效和描述性,如果你可以订购,例如像created_at这样的字段,那么它是:

post.objects.filter(category__name='car').order_by('-created_at')[:3]


这也更好,因为QuerySet,除非以某种方式排序,否则不保证任何排序,因此取决于数据库,它每次都可以以不同的顺序返回对象。

注意:Django中的模型是用 PascalCase 编写的,而不是 snake_case,所以你可能想把模型从post重命名为Post

oxf4rvwz

oxf4rvwz2#

这是正确的列表切片,用于检索可迭代对象中的最后3个元素

post.objects.filter(category__name = 'car')[-3:]

字符串

相关问题