在模型中的Django中选择相关的多对多字段

在模型中的Django中选择相关的多对多字段,django,Django,我的模型中有以下类: class Dish(models.Model): name = models.CharField(max_length=200) def get_ingredients(self): return #what to return? class DishIngredient(models.Model): dish = models.ForeignKey(Dish, on_delete=models.PROTECT) ingre

我的模型中有以下类:

class Dish(models.Model):
  name = models.CharField(max_length=200)

  def get_ingredients(self): 
    return #what to return?

class DishIngredient(models.Model):
  dish          = models.ForeignKey(Dish, on_delete=models.PROTECT)
  ingredient = models.ForeignKey(Ingredient, on_delete=models.PROTECT)
  number_of_units  = models.IntegerField('number of units')

class Ingredient(models.Model):
  name = models.CharField(max_length=100)
  unit = models.ForeignKey(Unit, on_delete=models.PROTECT)
我想要Dish.get_配料()返回DishComponent.number_of_units,配料.name,配料.unit的序列


有人知道怎么做吗?

效果很好。谢谢只是一个更新:我知道我的模型可以更好。我可以通过在我的菜肴模型中添加配料=models.ManyToManyField(配料,通过class='dishcomponent'),在很大程度上避免这个问题。
class Dish(models.Model):
    name = models.CharField(max_length=200)

    @property
    def get_ingredients(self):
         data = []
         dish_ingredients = DishIngredient.objects.filter(dish=self)
         for di in dish_ingredients:
            item = {
                    'number_of_units': di.number_of_units,
                    'name': di.ingredient.name,
                    'unit': di.ingredient.unit
                 }        
            data.append(item)
         return data