193 votes

Django tutorial: Qu'est-ce que choice_set?

Il y a cette ligne dans le Django tutoriel, la Rédaction de votre premier Django app, partie 1:

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

Comment est - choice_set appelée à l'existence et c'est quoi?

Je suppose que l' choice de la partie est de la version en minuscules du modèle Choice utilisé dans le tutoriel, mais qu'est - choice_set? Pouvez-vous développer?


Mise à jour 1: basé sur Ben James' réponse que je trouve une place dans les documents où il est décrit: les relations Suivantes "en arrière".

232voto

Ben James Points 41165

Vous avez créé une clé étrangère sur Choice qui porte chacun à une Poll.

Ainsi, chaque Choice explicitement a un poll domaine, vous avez déclaré dans le modèle.

L'ORM de Django suit la relation à rebours à partir de Poll trop, la génération automatique d'un champ sur chaque instance appelés foo_setFoo est le modèle avec un ForeignKey champ à ce modèle.

choice_set est RelatedManager qui peut créer querysets d' Choice objets qui se rapportent à l' Poll de l'instance, par exemple, p.choice_set.all()

Si vous n'aimez pas l' foo_set nommage qui Django choisit automatiquement, ou si vous avez plus d'une clé étrangère sur le même modèle et la nécessité de les distinguer, vous pouvez choisir votre propre primordial nom à l'aide de l' related_name argument ForeignKey.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X