web-dev-qa-db-ja.com

Djangoアプリチュートリアルのchoice_setとは何ですか?

Djangoチュートリアル、最初のDjangoアプリ、パート1の作成

p.choice_set.create(choice='Not much', votes=0)

choice_set存在に呼ばれ、それは何ですか?

choice部分はチュートリアルで使用されたモデルChoiceの小文字バージョンであると思いますが、choice_set?詳しく説明してもらえますか?

UPDATE:Ben の回答に基づいて、私はこのドキュメントを見つけました:次の関係「後方」

129
Peter Mortensen

Choiceに外部キーを作成し、各外部キーをQuestionに関連付けました。

したがって、各Choiceには、モデルで宣言したquestionフィールドが明示的にあります。

DjangoのORMは、Questionからの関係を逆にたどり、foo_setと呼ばれる各インスタンスのフィールドを自動的に生成します。ここで、Fooは、そのモデルに対するForeignKeyフィールドを持つモデルです。

choice_setRelatedManagerインスタンスに関連するChoiceオブジェクトのクエリセットを作成できるQuestionです。 q.choice_set.all()

Djangoが自動的に選択するfoo_setネーミングが気に入らない場合、または同じモデルに複数の外部キーがあり、それらを区別する必要がある場合は、 related_nameForeignKeyへの引数。

148
Ben James