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

How can I get all the objects in a Django model that have a specific value for a ForeignKey field?

提问人:Cato Johnston 提问时间:7/6/2009 最后编辑:Paul D. WaiteCato Johnston 更新时间:5/23/2011 访问量:14108

问:

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

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

正确的方法是什么?

django django-queryset

评论


答:

26赞 Steef 7/6/2009 #1

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

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

Django 文档

2赞 Cato Johnston 7/6/2009 #2

http://docs.djangoproject.com/en/dev/topics/db/queries/#lookups-that-span-relationships

1赞 darth happyface 5/23/2011 #3

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