【发布时间】:2012-03-19 20:26:32
【问题描述】:
为了让我的问题更容易理解,这里有一个例子。
有两种型号:
class A(models.Model):
name = models.CharField(max_length = 10)
class B(models.Model):
a = models.ForeignKey(A)
name = models.CharField(max_length = 10)
所以在这个例子中,A 和 B 是一对多的关系。现在假设我要进行以下查询:找到一个至少有一个 B 作为孩子的 A。在sql中,显然我应该使用exists子句。用orm能做到完全一样吗?
我对此进行了一些研究,但找不到与 sql 查询完美匹配的内容。最接近的解决方案是:
A.objects.filter(b__pk__gt = 0).distinct()
但是离sql中的exists子句还差得很远,可能没有exists那么高效。
【问题讨论】: