2

私はPythonの専門家ではなく、djangoが次のクエリを最適化する方法に興味があります

Model.objects.filter(field = 'abc')[0]

どういうわけか、djangoは' limit 1'のようにSQLクエリに''をインテリジェントに追加します' select * from model where field = 'abc' limit 1'

4

1 に答える 1

1

これは、Model.objects.filter(...)実際にはリストを返さず、クエリセットオブジェクトを返すためです。を実行すると、クエリセットのメソッドがqset[0]呼び出され、が追加されて実行されます。これがそのメソッドのソースです; 結果がすでにキャッシュされているかどうかなど、さまざまな場合のロジックがあります。__getitem__limit 1

于 2012-11-06T02:45:44.743 に答える