Jest taka linia w samouczku Django, Pisanie pierwszej aplikacji Django, część 1 :
p.choice_set.create(choice='Not much', votes=0)
Jak jest choice_set
powołany do istnienia i co to jest?
Przypuszczam, że choice
część jest wersją modelu Choice
używaną w tutorialu małymi literami , ale co to jest choice_set
? Czy możesz rozwinąć?
AKTUALIZACJA: W oparciu o odpowiedź Bena , znalazłem tę dokumentację: Następujące relacje są „wsteczne” .
Odpowiedzi:
Utworzyłeś klucz obcy, na
Choice
którym każdy z nich jest powiązany z plikiemQuestion
.Tak więc każdy
Choice
jawnie maquestion
pole, które zadeklarowałeś w modelu.ORM Django również podąża za relacją wstecz
Question
, automatycznie generując zmienną w każdej instancji o nazwiefoo_set
gdzieFoo
jest modelem zForeignKey
polem do tego modelu.choice_set
to narzędzie,RelatedManager
które może tworzyć zestawy zapytańChoice
obiektów, które odnoszą się doQuestion
instancji, npq.choice_set.all()
Jeśli nie podoba ci się
foo_set
nazewnictwo, które Django wybiera automatycznie lub jeśli masz więcej niż jeden klucz obcy do tego samego modelu i chcesz je rozróżnić, możesz wybrać własną nazwę nadpisującą, używającrelated_name
argumentu doForeignKey
.źródło
RelatedManager
może tworzyć zestawy zapytań.