我在查询集中有两个对象,按创建日期排序。我正在尝试从那里获取第一个和最后一个元素:
ordered = self.get_queryset().order_by('created')
print(ordered)
print(ordered.first(), ordered.last())
运行代码时,这是输出:
<QuerySet [<Item: itemone>, <Item: itemtwo>]>
itemone itemone
显然有两个对象,但是由于某种原因,它给了我相同的对象。
顺便说一句:我正在使用SQLite3。
谢谢!
答案 0 :(得分:0)
我偶然发现了使用Django 3,基于CreateView
类和模型类meta的ordering属性的同一问题。我不确定为什么会这样,但是order_by
方法解决了这个问题。
GoodModel.objects.order_by().last()
答案 1 :(得分:0)
我在一些模拟对象上遇到了同样的问题 - 结果我是在“创建”时间戳上排序,但由于所有对象的时间戳完全相同,first() 和 last() 将始终返回相同的对象。
这是一个功能,而不是一个错误:
https://code.djangoproject.com/ticket/30901
通过为每个“已创建”字段提供唯一时间戳来解决此场景中的问题。
一般来说,请确保您排序的值是唯一的。