2011-11-12 19 views
7

Ho due modelli:Django: definire un nome per ForeignKey inverso

class Foo(models.Model): 
    foo_field = ... 

class Bar(models.Model): 
    foo = models.ForeignKey(Foo) 
    bar_field = ... 

e posso accedere a tutte le istanze Bar relativi ad un Foo con:

Foo.bar_set.all() 

C'è un modo per cambiare il 'nome inverso', come in ManyToManyField, in modo che io possa scrivere:

Foo.bars.all() 

?

risposta

15

sì, utilizzando related_name

+0

Grazie, l'ho appena dimenticato! – Don

+2

... Personalmente non consiglierei questa soluzione. Avrai il nome di un FK inverso senza '_set' nel suo nome, ma gli altri FK sono rimasti intatti? È un po 'incoerente. Cosa succede quando successivamente aggiungi una colonna chiamata 'bars'? O non sarebbe meglio aggiungere @property 'bars' che restituisce 'self.bar_set.all()'? – yedpodtrzitko

Problemi correlati