2009-07-06 22 views
13

que tienen un modelo con una clave externa de "padre"¿Cómo puedo obtener todos los objetos en un modelo de Django que tienen un valor específico para un campo ForeignKey?

class Item(models.Model): 
parent = models.ForeignKey(Parent) 

Este es el modelo FK

class Parent(models.Model): 
name = models.CharField(blank=True, max_length=100) 

def __unicode__(self): 
    return str(self.name) 

Estoy tratando de ejecutar una consulta que obtiene todos los artículos con un padre de "xyz "no consigo nada

Item.objects.filter(parent="xyz") 

Cuando intento:

Item.objects.filter(parent.name="xyz") 

O:

Item.objects.filter(str(parent)="xyz") 

Me aparece un error:

SyntaxError: keyword can't be an expression 

¿Cuál es la forma correcta de hacer esto?

Respuesta

26

Puede usar un doble guión bajo en la palabra clave pasada a filter() para acceder a los campos en una relación de clave externa. De esta manera:

Item.objects.filter(parent__name="xyz") 

Django documentation

+0

gracias increíbles. –

1

Sólo para referencia futura para los empleados de Google, con las últimas versiones de Django tiene que usar un método adicional en la palabra clave. Por ejemplo, en lugar de parent__name, debe hacer parent__name__exact. El enlace de Cato contiene otros ejemplos.

Cuestiones relacionadas