web-dev-qa-db-ja.com

Django QuerySetとは何ですか?

私がこれをするとき、

>>> b = Blog.objects.all()
>>> b

私はこれを手に入れます:

>>>[<Blog: Blog Title>,<Blog: Blog Tile>]

bのタイプを照会すると、

>>> type(b)

私はこれを手に入れます:

>>> <class 'Django.db.models.query.QuerySet'>

これは何を意味するのでしょうか? dictlistなどのデータ型ですか?

QuerySetのようなデータ構造を構築する方法の例は高く評価されます。

DjangoがそのQuerySetをどのように構築するかを知りたいです(悲惨な詳細)。

41
gath

Django queryset は、その名前が示すように、基本的に(sql)クエリのコレクションです。上記の例では、print(b.query)は、Django filter呼び出し。

クエリセットは lazy であるため、データベースクエリはすぐには実行されませんが、必要な場合のみ-クエリセットがevaluatedの場合にのみ実行されます。これは、たとえば、印刷時に___str___メソッドを呼び出した場合、その上でlist()を呼び出した場合、または主に何が起こるかを繰り返します(_for post in b.._) 。この遅延により、不要なクエリを実行する必要がなくなり、たとえばクエリセットとフィルターを連鎖させることができます(クエリセットを必要なだけフィルターに掛けることができます)。

47

QuerySetは、データベースからのオブジェクトのコレクションを表します。フィルターは0個、1個、または多く持つことができます。フィルターは、指定されたパラメーターに基づいてクエリ結果を絞り込みます。 SQL用語では、QuerySetはSELECTステートメントと同等であり、フィルターはWHEREやLIMITなどの制限句です。

https://docs.djangoproject.com/en/1.8/topics/db/queries/

5
Harshit Garg

QuerySetは、特定のモデルのオブジェクトのリストです。QuerySetを使用すると、データベースからデータを読み取ることができます

0
harivans kumar