python - django - last() 和 first() 返回相同的对象
问题描述
我在按创建日期排序的查询集中有两个对象。我正在尝试从中获取第一个和最后一个元素:
ordered = self.get_queryset().order_by('created')
print(ordered)
print(ordered.first(), ordered.last())
运行代码时,输出如下:
<QuerySet [<Item: itemone>, <Item: itemtwo>]>
itemone itemone
显然有两个对象,但由于某种原因,它给了我相同的一个。
顺便说一句:我正在使用 SQLite3。
谢谢!
解决方案
CreateView
我在模型类元数据上使用 Django 3、基于类和排序属性时偶然发现了同样的问题。我不确定为什么会发生这种情况,但是order_by
方法可以解决问题。
# only for clarification used last()
GoodModel.objects.order_by().last()
编辑:
显然,该模型没有任何明确的排序属性,然后首先作为最后一个:),如果您尝试分页,您将收到更清晰的警告消息。有很多方法可以告诉 Django 模型如何处理排序,例如:
class UsefulModel(models.Model):
class Meta:
ordering='-created' # for example
希望现在更清楚@Raoul!
推荐阅读
- html - 静态视口宽度
- javascript - 为什么 JQuery $.post 提交两次?
- c++ - 如何在 autoconf 中为 clang 检查支持编译标志
- ruby-on-rails - 基于条件和来自不同数组的部分渲染
- qt - 具有两个不同边框和自定义半径的 QML 按钮
- php - php在使用AJAX上传表单后返回额外空间
- python - 标识符中的无效字符 (SyntaxError)
- javascript - 创建记忆游戏按照最后一步更新卡片正面和背面的网格现在网格显示不正确
- mysql - 创建函数时出现语法错误
- powershell - Microsoft Access DoCmd.OutputTo 无法识别 acOutPutQuery