gpt4 book ai didi

python - Django:来自 ManyToManyField 的*所有*值的查询集过滤器

转载 作者:太空宇宙 更新时间:2023-11-03 13:53:57 25 4
gpt4 key购买 nike

嗨(抱歉我的英语不好 :p)

想象一下这些模型:

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

class Basket(models.Model):
fruits = models.ManyToManyField(Fruit)

现在我想检索与所有 水果相关的篮子实例。问题是下面的代码返回与任何水果相关的 Basket 实例:

baskets = Basket.objects.filter(fruits__in=Fruit.objects.all())

# This doesn't work:
baskets = Basket.objects.filter(fruits=Fruit.objects.all())

有什么解决方案可以解决这个问题吗?

非常感谢。 :)

最佳答案

我没有方便的数据集来测试它,但我认为它应该可以工作:

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

它用相关水果的数量注释每个篮子对象,并过滤掉那些水果数量等于水果总数的篮子。

注意:你需要 Django 1.1 才能工作。

关于python - Django:来自 ManyToManyField 的*所有*值的查询集过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1453662/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com