Il y a cette ligne dans le tutoriel Django, Écriture de votre première Django, partie 1 =:
p.choice_set.create(choice='Not much', votes=0)
Comment est choice_set
appelé à l'existence et qu'est-ce que c'est?
Je suppose que la partie choice
est la version en minuscule du modèle Choice
utilisé dans le tutoriel, mais qu'est-ce que choice_set
? Peux-tu élaborer?
MISE À JOUR: Sur la base de la réponse de Ben , j'ai localisé cette documentation: Relations suivantes " en arrière ".
Vous avez créé une clé étrangère sur Choice
qui relie chacune à un Question
.
Ainsi, chaque Choice
possède explicitement un champ question
, que vous avez déclaré dans le modèle.
L'ORM de Django suit également la relation à partir de Question
, générant automatiquement un champ sur chaque instance appelé foo_set
Où Foo
est le modèle avec un champ ForeignKey
à celui modèle.
choice_set
Est un RelatedManager
qui peut créer des ensembles de requêtes d'objets Choice
qui se rapportent à l'instance Question
, par exemple q.choice_set.all()
Si vous n'aimez pas la dénomination foo_set
Qui Django choisit automatiquement, ou si vous avez plus d'une clé étrangère vers le même modèle et devez les distinguer, vous pouvez choisir votre propre nom prioritaire en utilisant l'argument related_name
à ForeignKey
.