【发布时间】:2015-09-22 14:54:45
【问题描述】:
我有几个模型,但我的问题是关于其中两个,A 和 B。
class A(models.Model):
...
class B(models.Model):
a = models.ForeignKey(A)
c = models.CharField(...)
d = models.ForeignKey(C)
我只想排除这个查询集:
set1 = B.objects.all()
从下面的查询集:
set2 = A.objects.all()
我知道我可以通过以下方式解决这个问题:
set1 = B.objects.all().values('a')
set2 = A.objects.all().exclude(pk__in = set1)
但是对于剩余的代码,我需要 set1 的所有值。如果我使用 values(),我不能使用 set1 的“c”和“d”字段。
那么,有什么方法可以在不缩小B域的情况下排除?
PS:我更喜欢远离新的查询。我知道我可以编写第二个 B 对象查询来满足我的需要。
【问题讨论】: