我有一个CartItem
带有ManyToMany字段的AttributeChoice
模型到模型.例如,a CartItem
可以具有AttributeChoice
"小"和"红色".
我想找到我的CartItem
两个都有"小"和"红"的属性.如果我执行以下操作:
CartItem.objects.get(cart=cart, product=product, attribute__in=attribute_list)
Run Code Online (Sandbox Code Playgroud)
"小"和"红" attribute_list
的AttributeChoice
对象列表在哪里.然后我也会得到只有"小"或"红"的对象,但不是两者.
所以这个查询都匹配:
虽然我想要的是一个只能匹配CartItem A的查询.
现在......我可以创建很多AND语句,但我需要一个灵活的解决方案,可以包含1或100个要过滤的属性.所以传递它的对象列表会很棒.
想法?
此问题的解决方案已发布在此主题中.
这是我写我的查询的方式:
CartItem.objects.filter(cart=cart, product=product, attribute__in=attribute_list).annotate(num_attr=Count('attribute')).filter(num_attr=len(attribute_list))
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4614 次 |
最近记录: |