Existe esta linha no tutorial do Django, Escrevendo seu primeiro aplicativo Django, parte 1 :
p.choice_set.create(choice='Not much', votes=0)
Como é choice_set
chamado à existência e o que é?
Suponho que a choice
peça seja a versão em minúscula do modelo Choice
usado no tutorial, mas o que é choice_set
? Você pode elaborar?
ATUALIZAÇÃO: Com base na resposta de Ben , localizei esta documentação: Seguindo os relacionamentos "atrasados" .
Respostas:
Você criou uma chave estrangeira na
Choice
qual relaciona cada uma a umQuestion
.Portanto, cada
Choice
um possui explicitamente umquestion
campo que você declarou no modelo.O ORM do Django também segue o relacionamento de trás para frente
Question
, gerando automaticamente um campo em cada instância chamadafoo_set
whereFoo
is the model com umForeignKey
campo para esse modelo.choice_set
é umRelatedManager
que pode criar conjuntos de consultas deChoice
objetos relacionados àQuestion
instância, por exemploq.choice_set.all()
Se você não gostar da
foo_set
nomeação escolhida automaticamente pelo Django, ou se tiver mais de uma chave estrangeira para o mesmo modelo e precisar diferenciá-las, poderá escolher seu próprio nome de substituição usando orelated_name
argumento paraForeignKey
.fonte
RelatedManager
que pode criar conjuntos de consultas.