Python Django:ManyToManyField中*all*值的queryset筛选器

Python Django:ManyToManyField中*all*值的queryset筛选器,python,sql,django,django-models,django-queryset,Python,Sql,Django,Django Models,Django Queryset,嗨(对不起我的英语不好:p) 想象一下这些模型: class Fruit(models.Model): # ... class Basket(models.Model): fruits = models.ManyToManyField(Fruit) 现在我想检索与所有水果相关的篮子实例。 问题是下面的代码返回与任何水果相关的篮子实例: 有什么办法可以解决这个问题吗 非常感谢。:) 我手头没有数据集来测试这一点,但我认为它应该可以工作: Basket.objects.annot

嗨(对不起我的英语不好:p)

想象一下这些模型:

class Fruit(models.Model):
    # ...

class Basket(models.Model):
    fruits = models.ManyToManyField(Fruit)
现在我想检索与所有水果相关的篮子实例。 问题是下面的代码返回与任何水果相关的篮子实例:

有什么办法可以解决这个问题吗


非常感谢。:)

我手头没有数据集来测试这一点,但我认为它应该可以工作:

Basket.objects.annotate(num_fruits=Count('fruits')).filter(num_fruits=len(Fruit.objects.all()))
它用相关水果的数量注释每个篮子对象,并过滤掉水果数量等于水果总量的篮子

注意:您需要Django 1.1才能工作

Basket.objects.annotate(num_fruits=Count('fruits')).filter(num_fruits=len(Fruit.objects.all()))