Django: sigue las relaciones hacia atrás.

Hola, tengo modelos como este:

class Galleries(models.Model): creation_date = models.DateTimeField() name = models.CharField(max_length=255, unique=True) gallery_type = models.ForeignKey(Categories) class Categories(models.Model): handle = models.CharField(max_length=255, unique=True) class Values(models.Model): category = models.ForeignKey(Categories) language = models.CharField(max_length=7) category_name = models.CharField(max_length=50) 

Y ahora, solo quiero alcanzar los valores de las categorías a partir de Galerías. Por ejemplo: galleries = Galleries.objects.get(id=1) . Y ahora quiero alcanzar los valores de alguna manera usando este objeto de “galerías” … Para obtener valores con un lenguaje específico sería mucho mejor … Extraño habilidades en Django ORM, así que si puedes, indícame algunos Docs o dar algún ejemplo de código. ¡Gracias!

 galleries = Galleries.objects.get(id=1) values = galleries.gallery_type.values_set.filter(language='language') 

Curiosamente, utilizó la redacción exacta que los documentos utilizan para referirse a las búsquedas de campos relacionados. Siempre me pareció extraña la definición, tal vez porque lo ponen entre comillas.

SIGUIENTES RELACIONES “ATRÁS”

http://docs.djangoproject.com/en/1.2/topics/db/queries/#following-relationships-backward

Es posible que desee utilizar el método select_related de los objetos para reducir el número de consultas que está realizando. select_related

 gallery = Galleries.objects.select_related().get(id=1) 

Puede establecer un nombre relacionado para el modelo de valores en la categoría fk:

 class Values(models.Model): category = models.ForeignKey(Categories, related_name="categories") language = models.CharField(max_length=7) category_name = models.CharField(max_length=50) 

Ahora puede obtener su lista de valores para un idioma específico haciendo

 values = gallery.gallery_type.categories.filter(language="language")