鉴于模型(供应商提供零件,多对多关系):
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>]
答案 0 :(得分:0)
您可以先查询所有部分:
parts = Part.objects.all()
然后过滤供应商:
vendors = Vendor.objects.filter(parts=parts)