[英]Query based on ManytoMany Field Django
我有以下模型,我想根据 ManytoMany 字段查询这些模型:
class Topping(models.Model):
topping_name=models.CharField(max_length=16)
class Cart_Item(models.Model):
pizza=models.ForeignKey(Pizza, blank=True, null=True, on_delete=models.CASCADE)
toppings=models.ManyToManyField(Topping, blank=True)
quantity=models.IntegerField()
我有一份配料清单。 我想查询一个Cart_Item
,其中toppings
字段包含列表中的所有值。 例如,如果我的列表是toppings_list=["Pepperoni","Mushroom"]
,那么我想要Cart_Item
,其中 toppings 仅包含这两种toppings
。 我怎么能这样查询?
我认为这是一个选择。
cart_items = (Cart_Item.objects.annotate(num_toppings=Count('toppings'))\
.filter(num_toppings__exact=2))\
.filter(toppings__topping_name=toppings_list[0])\
.filter(toppings__topping_name=toppings_list[1])
如果列表包含很多数据,那么您可以在循环中链接查询集。
for topping in toppings_list:
cart_items = cart_items.filter(toppings__topping_name=topping)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.