我不是 python 专家,我很好奇 django 如何优化以下查询
Model.objects.filter(field = 'abc')[0]
django 会以某种方式智能地将“limit 1”添加到 SQL 查询中,例如“select * from model where field = 'abc' limit 1”
请您参考如下方法:
这是因为 Model.objects.filter(...) 实际上不返回列表,它返回 queryset object .当您执行 qset[0] 时,它会调用查询集上的 __getitem__ 方法,该方法会添加 limit 1 并执行它。这是 the source of that method ;当结果已经缓存或未缓存时,存在各种情况的逻辑等等。
