如何在不读取Django中所有对象的情况下从数据库中获取一些最后的对象?

哈米德雷扎

有Django的一些功能,帮助您获得第一个或最后一个记录,如first()earliest()last()latest()我正在寻找的是一种无需读取所有数据即可获取最后一个对象的函数。例如这样的事情来获取最后3个对象:

last_three_objects = my_model.objects.get_last(count=3)

PS:我知道我可以这样获得:

last_three_objects = my_model.objects.all()[:3]

要么:

last_three_objects = my_model.objects.all().order_by('-datetime')[:3]

但是我认为它将my_model从数据库读取所有数据,而且效率不高!有什么想法吗?

威廉·范昂塞姆

但是我认为它将my_model从数据库读取所有数据,而且效率不高!有什么想法吗?

那是不对的QuerySets很懒。这意味着.all()不会评估,除非您“消费”它,例如通过对其进行迭代,调用len(…)str(…)对其进行调用

即使你切,也不会进行查询马上,你获得QuerySet的是承诺进行查询,如果你需要它。所以:

latest_three_objects = my_model.objects.all()[:3]

甚至不会进行查询,除非您对其进行迭代,在这种情况下,它将使用以下查询:

SELECT my_model.*
FROM my_model
LIMIT 3

例如,您可以通过以下方式检查查询:

print(my_model.objects.all()[:3].query)

例如在Django shell中。

但是,这不会返回最新的三个元素,而是可以返回模型的任何三个元素。如果要使用具有最大主键的元素,则可以使用:

my_model.objects.order_by('-pk')[:3]

此外,按主键排序不是一个好主意,因为您无法控制主键的分配方式,这是数据库的责任。您可以更好地创建一个存储时间戳的字段:

class MyModel(models.Model):
    timestamp = models.DateTimeField(auto_now_add=True, db_index=True)

然后通过最新时间戳检索元素:

my_model.objects.order_by('-timestamp')[:3]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

需要遍历数据库中的所有表并在条件匹配的情况下触发一些查询

来自分类Dev

如何在没有数据库中相应表的情况下将包装对象用作JPA实体

来自分类Dev

如何在Django中没有数据库的情况下存储用于通信的对象?

来自分类Dev

如何在不插入新对象的情况下从数据库更新对象?

来自分类Dev

如何在不使用数据库的情况下将数据对象保存在数据网格中

来自分类Dev

如何在不手动设置每个属性的情况下更新数据库中的实体对象?

来自分类Dev

在不使用数据库的情况下,需要一些有关C#中组合框的建议

来自分类Dev

如何在没有循环的情况下获取 Javascript 对象的所有键

来自分类Dev

没有cron的情况下如何在MySQL数据库中写入数据?

来自分类Dev

如何在给定一些kubernetes模板的情况下获取docker映像列表?

来自分类Dev

如何在没有数据库查询的情况下删除gridview中的行

来自分类Dev

如何在PHP中没有数据库的情况下显示多组值?

来自分类Dev

如何在没有秒的情况下从数据库中检索日期

来自分类Dev

NodeJS-如何在不读取所有行的情况下删除文本文件的第一行?

来自分类Dev

如何在不循环的情况下访问对象数组中的所有键和值

来自分类Dev

如何在不读取/加载像素数据的情况下读取DICOM专用标签?

来自分类Dev

我如何在没有链接的情况下向API发送一些参数?

来自分类Dev

在React中,如何在不映射整个对象的情况下获取数据并在状态数组中呈现单个对象?

来自分类Dev

在不清除页面的情况下如何在HTML中插入一些文本?

来自分类Dev

我可以在不知道其当前值的情况下向数据库中的int添加一些值吗

来自分类Dev

我可以在不知道其当前值的情况下向数据库中的int添加一些值吗

来自分类Dev

如何在不确定对象中的所有字段是否存在的情况下映射对象数组?

来自分类Dev

如何在不读取文档的情况下提前获取文档数量-Firestore-Swift

来自分类Dev

如何在没有集合的情况下从列表中查询一个对象?

来自分类Dev

在没有游标的情况下返回数据库中所有表中所有外键的计数

来自分类Dev

如何从我的数据库中获取一些内容以显示在我的 django html 项目中

来自分类Dev

如何在不使所有内容陷入困境的情况下获取Angular2模板中数组的最后一个元素?

来自分类Dev

如何仅从sql数据库中读取一些特殊行?

来自分类Dev

如何在没有内置方法的情况下获取用逗号分隔的对象数组中的所有值和键

Related 相关文章

  1. 1

    需要遍历数据库中的所有表并在条件匹配的情况下触发一些查询

  2. 2

    如何在没有数据库中相应表的情况下将包装对象用作JPA实体

  3. 3

    如何在Django中没有数据库的情况下存储用于通信的对象?

  4. 4

    如何在不插入新对象的情况下从数据库更新对象?

  5. 5

    如何在不使用数据库的情况下将数据对象保存在数据网格中

  6. 6

    如何在不手动设置每个属性的情况下更新数据库中的实体对象?

  7. 7

    在不使用数据库的情况下,需要一些有关C#中组合框的建议

  8. 8

    如何在没有循环的情况下获取 Javascript 对象的所有键

  9. 9

    没有cron的情况下如何在MySQL数据库中写入数据?

  10. 10

    如何在给定一些kubernetes模板的情况下获取docker映像列表?

  11. 11

    如何在没有数据库查询的情况下删除gridview中的行

  12. 12

    如何在PHP中没有数据库的情况下显示多组值?

  13. 13

    如何在没有秒的情况下从数据库中检索日期

  14. 14

    NodeJS-如何在不读取所有行的情况下删除文本文件的第一行?

  15. 15

    如何在不循环的情况下访问对象数组中的所有键和值

  16. 16

    如何在不读取/加载像素数据的情况下读取DICOM专用标签?

  17. 17

    我如何在没有链接的情况下向API发送一些参数?

  18. 18

    在React中,如何在不映射整个对象的情况下获取数据并在状态数组中呈现单个对象?

  19. 19

    在不清除页面的情况下如何在HTML中插入一些文本?

  20. 20

    我可以在不知道其当前值的情况下向数据库中的int添加一些值吗

  21. 21

    我可以在不知道其当前值的情况下向数据库中的int添加一些值吗

  22. 22

    如何在不确定对象中的所有字段是否存在的情况下映射对象数组?

  23. 23

    如何在不读取文档的情况下提前获取文档数量-Firestore-Swift

  24. 24

    如何在没有集合的情况下从列表中查询一个对象?

  25. 25

    在没有游标的情况下返回数据库中所有表中所有外键的计数

  26. 26

    如何从我的数据库中获取一些内容以显示在我的 django html 项目中

  27. 27

    如何在不使所有内容陷入困境的情况下获取Angular2模板中数组的最后一个元素?

  28. 28

    如何仅从sql数据库中读取一些特殊行?

  29. 29

    如何在没有内置方法的情况下获取用逗号分隔的对象数组中的所有值和键

热门标签

归档