0
私が作っていた場合:その後、質問(クエリセット)
queryset=User.objects.all()
lst=list(queryset)
print lst[2].first_name
は、それがデータベースからまたはメモリから2番目の要素のfirst_name
を取るのでしょうか?
私が作っていた場合:その後、質問(クエリセット)
queryset=User.objects.all()
lst=list(queryset)
print lst[2].first_name
は、それがデータベースからまたはメモリから2番目の要素のfirst_name
を取るのでしょうか?
list(queryset)
を呼び出すと、データベース内のクエリが評価され、メモリに格納されます。したがって、print[2].first_name
はdbを再度ヒットしませんが、メモリ内のリストから引き出します。
@Pol:あなたはそれについて考えるなら、他のことはできません。一旦 'list'を呼び出すと、それはもはやクエリーセットではなく、リストです。リストはデータベースについて何も知らない。 –
しかし、リストにはユーザーインスタンスが存在します。また、ユーザーインスタンスはModelクラスの継承オブジェクトです。そして、モデルクラスはデータベースとの関係が大変です。 – Pol
はい、モデルは実際にはデータベースについても実際には何も知りません。モデルはクエリーセットによってデータベースから読み込まれ、それ自体を元に戻す方法を知っていますが、それ以外の方法では関連しません。 –