Django查询供应所有部件的供应商

时间:2016-01-07 17:13:13

标签: django django-models

鉴于模型(供应商提供零件,多对多关系):

from django.db import models

class Part(models.Model):
    pass

class Vendor(models.Model):
    name = models.CharField(max_length=100)
    parts = models.ManyToManyField(Part)
    def __str__(self):
        return "%s" % self.name

是否可以编写Django查询以获得提供所有部件的供应商?我对一个会生成单个SQL语句的查询感兴趣。

例如,使用以下数据:

p1 = Part()
p2 = Part()
p3 = Part()
v1 = Vendor(name="supply nothing")
v2 = Vendor(name="supply some parts")
v3 = Vendor(name="supply all parts")
p1.save()
p2.save()
p3.save()
v1.save()
v2.save()
v3.save()
v2.parts.add(p1,p2)
v3.parts.add(p1,p2,p3)

我想得到:

[<Vendor: supply all parts>]

1 个答案:

答案 0 :(得分:0)

您可以先查询所有部分:

parts = Part.objects.all()

然后过滤供应商:

vendors = Vendor.objects.filter(parts=parts)