Django过滤器,其中manytomy字段包含所有li

2024-10-01 09:26:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个CartItem模型,其中有一个AttributeChoice模型的多个字段。例如,CartItem可以有AttributeChoice“Small”和“Red”。在

然后我想找到我的CartItem,它们都有属性“Small”和“Red”。如果我执行以下操作:

CartItem.objects.get(cart=cart, product=product, attribute__in=attribute_list)

其中attribute_list是“Small”和“Red”的AttributeChoice对象列表。然后我也会得到只有“小”或“红”的对象,但不能同时有两个。在

因此此查询将匹配:

  • CartItem A,小号,红色
  • CartItem B,小
  • CartItem C,红色

而我想要的是一个只匹配CartItem a的查询

现在。。。我可以创建很多AND语句,但我需要一个灵活的解决方案,它可以包含1到100个要筛选的属性。所以给它一个对象的列表是很好的。在

有什么想法?在


Tags: 对象模型列表get属性objectsattributered
1条回答
网友
1楼 · 发布于 2024-10-01 09:26:16

此问题的解决方案已发布在this thread中。在

我这样写我的疑问:

CartItem.objects.filter(cart=cart, product=product, attribute__in=attribute_list).annotate(num_attr=Count('attribute')).filter(num_attr=len(attribute_list))

相关问题 更多 >