簡體   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