Il y a cette ligne dans le tutoriel Django, Écrire votre première application 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 choice
partie est la version minuscule du modèle Choice
utilisé dans le didacticiel, mais qu'est-ce que c'est choice_set
? Peux-tu élaborer?
MISE À JOUR: Sur la base de la réponse de Ben , j'ai localisé cette documentation: Suite aux relations «en arrière» .
Réponses:
Vous avez créé une clé étrangère sur
Choice
laquelle relie chacun à un fichierQuestion
.Ainsi, chacun a
Choice
explicitement unquestion
champ, que vous avez déclaré dans le modèle.L'ORM de Django suit la relation à rebours
Question
, générant automatiquement un champ sur chaque instance appeléefoo_set
oùFoo
est le modèle avec unForeignKey
champ vers ce modèle.choice_set
est unRelatedManager
qui peut créer des ensembles de requêtes d'Choice
objets qui se rapportent à l'Question
instance, par exempleq.choice_set.all()
Si vous n'aimez pas la
foo_set
dénomination que Django choisit automatiquement, ou si vous avez plus d'une clé étrangère pour le même modèle et avez besoin de les distinguer, vous pouvez choisir votre propre nom de substitution en utilisant l'related_name
argument toForeignKey
.la source
RelatedManager
qui peut créer des ensembles de requêtes.