繁体   English   中英

基于 ManytoMany 字段查询 Django

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM