2017-02-07 11 views
3

Djangoのクエリーセットで_setを使用する方法がちょっと混乱しています。たとえば、オブジェクトブログb、およびオブジェクトEntryは、属性entry_setによって関連付けられています。 b.entry_set.all()の意味は?私は誰かがこの例を使って可能な出力を表示できるかどうか分かります。Djangoでクエリセットを設定する

答えて

9

あなたが見ているものはreverse related object lookupです。あなたの例では

: - 前方関係である

class Blog(models.Model): 
    pass 

class Entry(..): 
    blog = Blog(..) 

さて、タイプEntryのオブジェクトe与え、あなたは関連オブジェクトBlogにアクセスするにはe.blogを行うだろう。 _setは、あなたのために入れられる逆引き参照変数djangoです。

だから、与えられたオブジェクト b - あなたはどうなる:逆クエリセットです

entries = b.entry_set.all() 

理由は、ForeignKeyのは1-to-many関係です。したがって、その逆はクエリーセットです。

_setオブジェクトは、related_name is not specifiedのときに使用できます。

+0

私たちは単にエントリ= b.entry.all()と言うことはできません。単に「セット」が何をしているのか理解しようとしていますか? – Stryker

+0

説明を読みましたか?またリンクを通過しましたか? – karthikr

+0

は数回読む必要がありました。私は、 '_set'という言葉は、実際に何かを設定するのではなく、関連するすべてのオブジェクトを "取得"するということです。それが私がそれを理解する方法です。 – Stryker

関連する問題