1

多対1モデルでは、マネージャーからオブジェクトの1つ(任意の1つのオブジェクト)のみを取得したいのですが、それを行うにはどうすればよいですか?

models.School.student_set.any_one()

ドキュメントにそのような方法は見つかりませんでした。今私は次のようなことをしています:

models.School.student_set.all()[0]

これは非効率的だと思います。

4

1 に答える 1

4

QuerySet は実際にデータを取得するまで評価されないため、結果をスライスすることall()は実際には効率的です。

QuerySets のドキュメントを参照してください- 「クエリセットを評価するために何かを行うまで、実際にはデータベース アクティビティは発生しません。」また、QuerySets の制限に関するドキュメントでは、ケースについて明示的に言及しています。

django.db.connection.queries冒険したい場合は、 ( docs )を見て自分で確認できます。

于 2013-01-27T15:23:34.613 に答える