web-dev-qa-db-fra.com

Qu'est-ce que choice_set sur le Django Tutorial App?

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 ".

129
Peter Mortensen

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_setFoo 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.

148
Ben James