14

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

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

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

4

3 回答 3

26

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

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

Django 文档

于 2009-07-06T10:20:01.393 回答
2

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

于 2009-07-06T10:24:14.427 回答
1

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

于 2011-05-23T14:41:32.800 回答