簡體   English   中英

導航多對多關系Django

[英]Navigating Many to Many Relationships Django

我需要獲取給定菜單的項目名稱和數量列表。 我如何查詢和返回帶有所需列的QuerySet?

我只獲得菜單列表,但仍然無法獲得數量。 我應該做多個查詢還是嘗試使用原始SQL

class Item(models.Model):
    name = models.CharField(max_length=20)

class Meals(models.Model):
    name = models.CharField(max_length=50)
    ingredients = models.ManyToManyField(Item, through='MealRecipe')


 class Menu(models.Model):
     name = models.CharField(max_length=50)
     meals = models.ManyToManyField(Meals,through='CompMenu')


 class CompMenu(models.Model):
     TYPE_COMP = (
         ('B', 'Breakfast'),
         ('L', 'Lunch'),
         ('D', 'Dinner')
     )
     menu = models.ForeignKey(Menu)
     meal = models.ForeignKey(Meals)
     type = models.CharField(max_length=1, choices=TYPE_COMP)

class MealRecipe(models.Model):
    meal = models.ForeignKey(Meal)
    item = models.ForeignKey(Item)
    qty = models.IntegerField()

如果我記得改正,可以通過以下方式獲取nameqty

menu = Menu.objects.filter(name='some_name')
meals_of_menu = menu[idx].meals.all()

receipes = MealRecipe.objects.filter(meal__in=meals_of_menu)
for receipe in receipes:
    name = receipe.item.name
    qty = receipe.qty

如果我MealRecipe.objects.filter(meal__menu=some_menu_instance).distinct()話, MealRecipe.objects.filter(meal__menu=some_menu_instance).distinct()應該可以做到。 或者,如果您擁有菜單ID而不是實例, meal__menu__id=some_id 。這只是一個標准的交叉關系查詢。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM