我有一个CartItem
具有 ManyToMany 字段的模型AttributeChoice
模型。例如CartItem
可以有AttributeChoice
“小”和“红”。
我想找到我的CartItem
两者都有属性“小”和“红色”。如果我执行以下操作:
CartItem.objects.get(cart=cart, product=product, attribute__in=attribute_list)
Where attribute_list
是一个列表AttributeChoice
“小”和“红色”的对象。然后我还将获得仅具有“小”或“红色”的对象,但不会同时具有两者。
所以这个查询将匹配:
- 购物车商品 A,小号,红色
- 购物车商品 B,小号
- 购物车商品 C,红色
虽然我想要的是一个只匹配 CartItem A 的查询。
现在...我可以创建很多 AND 语句,但我需要一个灵活的解决方案,并且可以包含 1 或 100 个要过滤的属性。因此,向它传递一个对象列表会很棒。
Ideas?
该问题的解决方案已发布在这个线程.
这就是我编写查询的方式:
CartItem.objects.filter(cart=cart, product=product, attribute__in=attribute_list).annotate(num_attr=Count('attribute')).filter(num_attr=len(attribute_list))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)