Given the model (vendors supplying parts, many-to-many relation):
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
Is it possible to write a Django query to get vendors who supply all of the parts? I'm interested in a query which will produce single SQL statement.
For example, with the following data:
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)
I want to get:
[<Vendor: supply all parts>]