1. ホーム
  2. python

[解決済み] このDjangoアプリのチュートリアルにあるchoice_setとは何ですか?

2022-05-07 07:38:56

質問

Djangoのチュートリアルにこのような行があります。 初めてのDjangoアプリを書く、パート1 :

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

どのように choice_set を呼び出すと、それは何ですか?

のことでしょう。 choice の部分は、モデルの小文字バージョンです。 Choice はチュートリアルで使用されましたが choice_set ? 詳しく教えてください。

UPDATEです。 に基づいています。 ベン の回答で、このドキュメントを探し当てました。 後続の関係 "backward"。 .

解決方法は?

に外部キーを作成しました。 Choice に関連付け、それぞれを Question .

そのため、各 Choice は、明示的に question フィールドを作成し、それをモデルで宣言します。

Django の ORM は、このリレーションシップを逆引きして Question というフィールドを各インスタンスに自動的に生成します。 foo_set ここで Foo はモデルで ForeignKey フィールドをそのモデルに追加します。

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

が嫌な場合は foo_set という名前にすることもできますし、同じモデルに対して複数の外部キーがあり、それらを区別する必要がある場合は related_name への引数は ForeignKey .