在模型中的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