2009-07-06 9 views
13

Ben "Ana"Bir ForeignKey alanı için belirli bir değeri olan bir Django modelindeki tüm nesneleri nasıl alabilirim?

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

Bu FK modeli

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

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

Ben "xyz bir ebeveyn ile tüm öğeler alır bir sorgu çalıştırmak için çalışıyorum olduğunu bir yabancı Anahtarla bir modeli var Ben çalıştığımda "hiçbir şey

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

olsun:

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

Veya:

SyntaxError: keyword can't be an expression 

Bunu yapmanın doğru yolu nedir:

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

bir hata alıyorum?

cevap

26

Yabancı anahtar ilişkisindeki alanlara erişmek için filter()'a iletilen anahtar kelimede çift alt çizgi kullanabilirsiniz. Şunun gibi: Sadece Django son sürümleri ile Google çalışanları için ileride başvurmak için

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

Django documentation

+0

Harika teşekkürler. –

1

anahtar kelimeye ek bir yöntem kullanmak gerekir. Örneğin, parent__name yerine parent__name__exact yapmalısınız. Cato'nun linki başka örnekler içeriyor.