2016-12-06 1 views
1

をmodel_setは、私は、次のコマンドを見ジャンゴ1.10公式のチュートリアルパート2ジャンゴ:オブジェクトと

class Question(models.Model): 
    # ...... 

class Choice(models.Model): 
    question = models.ForeignKey(Question, on_delete=models.CASCADE) 
    #....... 
最近

を学んでいます: -

q = Question.objects.get(id=1) 
q.choice_set.all() 

私の質問: -

どのように質問インスタンスをchoice_setが含まれていますが、私は関連するオブジェクトにアクセスするためにそれを知っています。

なぜこの有効ではありません

c = Choice.objects.get(id=1) 
c.question_set.all() 

答えて

3

が質問モデルを選択モデルに明示の参照を持っていないです。しかし、Djangoは自動的にreverse-referenceを追加します。これはデフォルトでchoice_setと呼ばれます。 、あなたの2番目の質問に答えるために

q = Question.objects.get(pk=1) 
q.choices.all() 

:今、あなたはこのような質問のための選択肢の全てを参照することができ

class Choice(models.Model): 
    question = models.ForeignKey(Question, on_delete=models.CASCADE, related_name='choices') 

:あなたは、次のようなモデルにrelated_nameキーワードによってこれを上書きすることができますあなたが参照を使用できない理由question_set.all()選択肢オブジェクトはそれぞれの選択肢のために1つの質問プラスがあります明示的参照t o質問オブジェクト。つまり、Choiceモデルには、という質問というフィールドがあり、質問モデルを指しています。

希望に役立ちます。

+0

ありがとう、私は 'RelatedManager' https://docs.djangoproject.com/en/1.10/ref/models/relations/#related-objects-referenceも参照しました。私は将来の参考のためにそのような情報を得ることができる場所にリンクできますか? –

+0

この情報は、Djangoの公式ドキュメント(https://docs.djangoproject.com/en/1.10/)から入手できます。 – user4426017

関連する問題