Django-限制查询结果

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

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

首先选取所有实例,然后只选取最后10个实例,这是真的吗?
有没有更有效的方法

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

因此,在打印或实际使用查询结果之前,您可以进一步过滤,而无需访问数据库

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

[19]on

:导入日志
At[20]on:l=logging.getLogger('django.db.backends'))
In[21]:l.setLevel(logging.DEBUG)
At[22]on:l.addHandler(logging.StreamHandler())
At[23]on:User.objects.all().order_by('-id')[:10]
(0.000)选择“身份验证用户”、“id”、“身份验证用户”、“用户名”、“身份验证用户”、“名字”、“身份验证用户”、“姓氏”、“身份验证用户”、“电子邮件”、“身份验证用户”、“密码”、“身份验证用户”、“身份验证工作人员”、“身份验证用户”、“身份验证用户”、“身份验证用户”、“身份验证用户”、“身份验证超级用户”、“身份验证用户”、“身份验证用户”、“最后登录”、“身份验证用户”、“加入日期”由“身份验证用户”命令按“身份验证用户限制”规定的10;args=()
Out[23]:[<用户:hamdi>]

发表评论