Django)如何在ManyToMany关系中查询另一个模型的字段

时间:2019-04-28 17:35:02

标签: django django-models django-rest-framework

我想从包含ManyToMany关系中另一个模型的模型中查询数据字段。

例如,我想从Dinner模型计算总成本,该模型与Menu模型具有ManyToMany关系。这是简化的代码。

class Menu(models.Model):
    cost = models.IntegerField()

class Dinner(models.Model):
    menus = models.ManyToManyField(Menu)
    objects = DinnerManager()

class DinnerManager(models.Manager):
    def get_total_cost(self):
        total_cost = 0
        for each_menu in self.menus.all():
            total_cost += each_menu.cost
        return total_cost

所以我的问题是:我应该如何设置

  

self.menus.all()中的each_menu:

     

total_cost + = each_menu.cost

这两行让我的类方法正常工作? (或者,如果其他部分有误,请告诉我。我对Django还是陌生的。)

1 个答案:

答案 0 :(得分:3)

此代码可以正常工作,只是它属于Dinner模型而不是Manager。它与特定晚餐有关,而不是与一般晚餐有关,并且需要计算与该单独晚餐相关的菜单项的值。