多対1モデルでは、マネージャーからオブジェクトの1つ(任意の1つのオブジェクト)のみを取得したいのですが、それを行うにはどうすればよいですか?
models.School.student_set.any_one()
ドキュメントにそのような方法は見つかりませんでした。今私は次のようなことをしています:
models.School.student_set.all()[0]
これは非効率的だと思います。
多対1モデルでは、マネージャーからオブジェクトの1つ(任意の1つのオブジェクト)のみを取得したいのですが、それを行うにはどうすればよいですか?
models.School.student_set.any_one()
ドキュメントにそのような方法は見つかりませんでした。今私は次のようなことをしています:
models.School.student_set.all()[0]
これは非効率的だと思います。
QuerySet は実際にデータを取得するまで評価されないため、結果をスライスすることall()
は実際には効率的です。
QuerySets のドキュメントを参照してください- 「クエリセットを評価するために何かを行うまで、実際にはデータベース アクティビティは発生しません。」また、QuerySets の制限に関するドキュメントでは、ケースについて明示的に言及しています。
django.db.connection.queries
冒険したい場合は、 ( docs )を見て自分で確認できます。