<p>也许你可以用<a href="https://docs.djangoproject.com/en/dev/topics/db/queries/#complex-lookups-with-q-objects" rel="nofollow">Q objects</a>来做这个。我对您的示例有一些问题,但是让我们用一个更简单的模型来看看。在</p>
<pre><code>class Garage(models.Model):
name = models.CharField()
class Vehicle(models.Model):
wheels = models.IntegerField()
gears = models.IntegerField()
garage = models.ForeignKey(Garage)
</code></pre>
<p>假设你想把所有的“多轮”车辆都放在车库里(例如,所有的摩托车和汽车,但没有独轮车),但是对于汽车,你只想要那些带有无级变速器的车辆,这意味着它们只有一个档位。(这是怎么回事,没有线索,但请你忍受我。。。;)以下内容应能给您提供:</p>
^{pr2}$
<p>鉴于以下可用数据:</p>
<pre><code>for v in Vehicle.objects.filter(garage=garage):
print 'Wheels: {}, Gears: {}'.format(v.wheels, v.gears)
Wheels: 1, Gears: 1
Wheels: 2, Gears: 4
Wheels: 2, Gears: 5
Wheels: 4, Gears: 1
Wheels: 4, Gears: 5
</code></pre>
<p>运行查询将为我们提供:</p>
<pre><code>for v in query:
print 'Wheels: {}, Gears: {}'.format(v.wheels, v.gears)
Wheels: 2, Gears: 4
Wheels: 2, Gears: 5
Wheels: 4, Gears: 1
</code></pre>
<p>最后,为了使其适应您的情况,您可以使用以下代码:</p>
<pre><code>query = models.Resource.objects.filter(Q(resPool__reservation__in=reservations))
query = query.filter(Q(name__in(resourcesNames))
query = query.filter(Q(resPool__exclusive=True) & Q(resPool__mode=0))
</code></pre>