gpt4 book ai didi

Django - 限制查询结果

转载 作者:行者123 更新时间:2023-11-28 19:32:17 28 4
gpt4 key购买 nike

我想获取模型的最后 10 个实例并使用以下代码:

 Model.objects.all().order_by('-id')[:10]

是不是先取所有实例,然后只取最后10个?有没有更有效的方法?

最佳答案

Django 查询集是惰性的。这意味着只有当您明确要求结果时,查询才会访问数据库。

因此,在您打印或实际使用查询结果之前,您可以在不访问数据库的情况下进一步过滤。

正如您在下面看到的,您的代码仅执行一个 sql 查询以仅获取最后 10 个项目。

In [19]: import logging                                 
In [20]: l = logging.getLogger('django.db.backends')
In [21]: l.setLevel(logging.DEBUG)
In [22]: l.addHandler(logging.StreamHandler())
In [23]: User.objects.all().order_by('-id')[:10]
(0.000) SELECT "auth_user"."id", "auth_user"."username", "auth_user"."first_name", "auth_user"."last_name", "auth_user"."email", "auth_user"."password", "auth_user"."is_staff", "auth_user"."is_active", "auth_user"."is_superuser", "auth_user"."last_login", "auth_user"."date_joined" FROM "auth_user" ORDER BY "auth_user"."id" DESC LIMIT 10; args=()
Out[23]: [<User: hamdi>]

关于Django - 限制查询结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6574003/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com