Djangoチュートリアル、最初のDjangoアプリ、パート1の作成:
p.choice_set.create(choice='Not much', votes=0)
choice_set
存在に呼ばれ、それは何ですか?
choice
部分はチュートリアルで使用されたモデルChoice
の小文字バージョンであると思いますが、choice_set
?詳しく説明してもらえますか?
Choice
に外部キーを作成し、各外部キーをQuestion
に関連付けました。
したがって、各Choice
には、モデルで宣言したquestion
フィールドが明示的にあります。
DjangoのORMは、Question
からの関係を逆にたどり、foo_set
と呼ばれる各インスタンスのフィールドを自動的に生成します。ここで、Foo
は、そのモデルに対するForeignKey
フィールドを持つモデルです。
choice_set
はRelatedManager
インスタンスに関連するChoice
オブジェクトのクエリセットを作成できるQuestion
です。 q.choice_set.all()
Djangoが自動的に選択するfoo_set
ネーミングが気に入らない場合、または同じモデルに複数の外部キーがあり、それらを区別する必要がある場合は、 related_name
ForeignKey
への引数。