如何获取Django模型中具有ForeignKey字段特定值的所有对象?

时间:2009-07-06 10:16:18

标签: django django-queryset

我有一个外键为“父”的模型

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

这是FK模型

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

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

我正在尝试运行一个查询,获取父项为“xyz”的所有项目我什么都没得到

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

当我尝试:

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

或者:

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

我收到错误:

SyntaxError: keyword can't be an expression

这样做的正确方法是什么?

3 个答案:

答案 0 :(得分:26)

您可以在传递给filter()的关键字中使用双下划线来访问外键关系中的字段。像这样:

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

Django documentation

答案 1 :(得分:2)

答案 2 :(得分:1)

仅供将来参考Google员工使用最新版本的Django,您必须在关键字中使用其他方法。例如,您必须parent__name而不是parent__name__exact。 Cato的链接包含其他示例。