私はPythonの専門家ではなく、djangoが次のクエリを最適化する方法に興味があります
Model.objects.filter(field = 'abc')[0]
どういうわけか、djangoは' limit 1'のようにSQLクエリに''をインテリジェントに追加します' select * from model where field = 'abc' limit 1'
これは、Model.objects.filter(...)実際にはリストを返さず、クエリセットオブジェクトを返すためです。を実行すると、クエリセットのメソッドがqset[0]呼び出され、が追加されて実行されます。これがそのメソッドのソースです; 結果がすでにキャッシュされているかどうかなど、さまざまな場合のロジックがあります。__getitem__limit 1