我有这样的对象:
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()
之类的操作,因为我已经对框进行了一些过滤。
最佳答案
您可以像过滤中的一对多关系一样对待多对多关系:
boxes = Box.objects.filter(name__startswith='Big', pencils__title='blue')
关于python - 如何过滤包含对象的ManyToMany,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27649530/