2011-11-12 12 views
7

Tengo dos modelos:Django: definir un nombre para ForeignKey inversa

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

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

y puedo acceder a todas las instancias de barras relacionados con un Foo con:

Foo.bar_set.all() 

¿Hay una manera de cambiar el 'nombre inverso', como en ManyToManyField, para que pueda escribir:

Foo.bars.all() 

?

Respuesta

15

sí, usando related_name

+0

Gracias, ¡simplemente lo olvidé! – Don

+2

... personally No recomendaría esta solución. ¿Tendrás el nombre de un FK inverso sin el nombre '_set' en su nombre, pero otros FK quedarán intactos? Es un poco inconsistente. ¿Qué sucede cuando luego agrega una columna llamada 'barras'? ¿O no sería mejor agregar @property 'bars' que devuelve 'self.bar_set.all()'? – yedpodtrzitko

Cuestiones relacionadas