Python 导航多对多关系Django

Python 导航多对多关系Django,python,django,Python,Django,我需要得到一个给定菜单的项目名称和数量列表。如何查询并返回包含所需列的查询集 我只得到菜单列表,但仍然无法得到数量。我应该执行多个查询还是尝试使用原始sql class Item(models.Model): name = models.CharField(max_length=20) class Meals(models.Model): name = models.CharField(max_length=50) ingredients = models.ManyTo

我需要得到一个给定菜单的项目名称和数量列表。如何查询并返回包含所需列的查询集

我只得到菜单列表,但仍然无法得到数量。我应该执行多个查询还是尝试使用原始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()

如果我记得正确,您可以通过以下方式获得
名称
数量

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(膳食菜单=某些菜单实例)。distinct()
应该可以,如果我没记错的话。或者
用餐\uuuu菜单\uuu id=some\u id
如果您有菜单id而不是实例,等等。这只是一个标准的交叉关系查询。

谢谢,我如何获取与给定菜单相关的给定用餐列表的项目列表。我应该使用多个查询吗?我得到的对象没有“name”属性。我希望现在我正确地理解了您的问题并进行了适当的更改。它起了作用,但首先我更改了_menu=menu[idx]的fines\u行。fines.all()@gaccep按照您的建议进行了更改。很乐意帮忙。你能接受答案吗(在我的答案前面,上下箭头下有一个灰色的复选标记)。非常感谢。