use*_*455 3 python sql django django-models django-queryset
嗨(抱歉我的英文不好:p)
想象一下这些模型:
class Fruit(models.Model):
# ...
class Basket(models.Model):
fruits = models.ManyToManyField(Fruit)
Run Code Online (Sandbox Code Playgroud)
现在我想检索与所有水果相关的篮子实例.问题是下面的代码返回与任何水果相关的Basket实例:
baskets = Basket.objects.filter(fruits__in=Fruit.objects.all())
# This doesn't work:
baskets = Basket.objects.filter(fruits=Fruit.objects.all())
Run Code Online (Sandbox Code Playgroud)
任何解决方案都解决了这个问题
非常感谢你.:)
我没有一个数据集方便测试这个,但我认为它应该工作:
Basket.objects.annotate(num_fruits=Count('fruits')).filter(num_fruits=len(Fruit.objects.all()))
Run Code Online (Sandbox Code Playgroud)
它用相关水果的数量来注释每个篮子对象,并筛选出那些水果数量等于水果总量的篮子.
注意:你需要Django 1.1才能工作.
| 归档时间: |
|
| 查看次数: |
1436 次 |
| 最近记录: |