我有这样的对象:
class Pencil(models.Model):
color = models.CharField(max_length=20, unique=True)
class Box(models.Model):
pencils = models.ManyToManyField(Pencil)
name = models.CharField(max_length=50)
让我们说我有一支蓝色的铅笔:
pencil = Pencil.objects.create(color='blue')
然后我创建了一些Box类的实例。然后我按名称进行了一些过滤
boxes = Box.objects.filter(name__startswith='Big')
如何进一步过滤以仅获取名称从" Big"有一支蓝色铅笔?我不能做pencil.box_set.all()
这样的事情,因为我已经在盒子上做了一些过滤。
答案 0 :(得分:2)
您可以将多对多关系视为过滤中的一对多关系:
boxes = Box.objects.filter(name__startswith='Big', pencils__title='blue')
答案 1 :(得分:1)
boxes = Box.objects.filter(name__startswith='Big', pencils__in=[Pencil.objects.filter(color='blue')])