Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我不是 python 专家,我很好奇 django 如何优化以下查询
Model.objects.filter(field = 'abc')[0]
不知何故,django 会智能地将 ' limit 1' 添加到 SQL 查询中,例如 ' select * from model where field = 'abc' limit 1'
limit 1
select * from model where field = 'abc' limit 1
这是因为Model.objects.filter(...)它实际上并没有返回一个列表,它返回一个查询集对象。当您这样做时qset[0],它会调用查询__getitem__集上的方法,该方法会添加limit 1并执行它。这是该方法的来源;当结果已经被缓存或没有被缓存等等时,有各种情况的逻辑。
Model.objects.filter(...)
qset[0]
__getitem__