我想取一个模型的最后10个实例,并有这样的代码:
Model.objects.all().order_by('-id')[:10]
是不是先选取所有实例,然后只选取最后10个实例? 有没有更有效的方法?
我想取一个模型的最后10个实例,并有这样的代码:
Model.objects.all().order_by('-id')[:10]
是不是先选取所有实例,然后只选取最后10个实例? 有没有更有效的方法?
当前回答
是的。如果你想获取有限的对象子集,你可以使用下面的代码:
例子:
obj=emp.objects.all()[0:10]
开始的0是可选的,所以
obj=emp.objects.all()[:10]
上面的代码返回前10个实例。
其他回答
实际上,我认为LIMIT 10会被发布到数据库,这样切片就不会在Python中发生,而是在数据库中发生。
有关更多信息,请参阅limits -querysets。
作为对其他有用答案的补充和观察,值得注意的是,实际执行[:10]As切片将返回列表的前10个元素,而不是后10个元素……
为了得到最后的10,你应该做[-10:](见这里)。这将帮助您避免使用order_by('-id')和-来反转元素。
是的。如果你想获取有限的对象子集,你可以使用下面的代码:
例子:
obj=emp.objects.all()[0:10]
开始的0是可选的,所以
obj=emp.objects.all()[:10]
上面的代码返回前10个实例。
Django。9 1个。
打印qs。查询并查看LIMIT
pos_random = Position.objects.filter( gps_time__gte = start_time, gps_time__lte = end_time, vehicle = v)[:**LIMIT_NUMBER**]
过滤器问题的简单答案
Notification.objects.filter(user=request.user).order_by("-id")[:limit]
只需输入order_by然后[:limit]