首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Django模型方法中的参考ManyToMany场

Django模型方法中的参考ManyToMany场
EN

Stack Overflow用户
提问于 2019-07-15 11:00:25
回答 1查看 684关注 0票数 1

我试图在代码中引用UnitsAdd-Ons之间的Add-Ons连接,以启用提供价格的方法,但我似乎无法在模型方法中引用这种关系,有人能指出正确的方向吗?

代码语言:javascript
运行
AI代码解释
复制
class Unit(models.Model):
    class Meta:
        permissions = (
            ('generate_unit_csv', 'can generate unit csv'),
        )
        unique_together = ['building', 'unit_number', 'property']


    add_ons = models.ManyToManyField(
         'properties.RentalAddOns', related_name='add_on_units')
    ...


    def get_add_on_price(self):
        total_price = 0
        # there is no self.add_on_units or self.add_ons
        for add_on in self.add_on_units:
            total_price += add_on.price
        return total_price

当我调用该方法时,会得到一个属性错误:

代码语言:javascript
运行
AI代码解释
复制
'Unit' object has no attribute 'add_on_units'

当我简单地使用self.add_ons时,我得到:

代码语言:javascript
运行
AI代码解释
复制
'ManyRelatedManager' object is not iterable
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-15 11:04:55

由于您已经在此模型中定义了字段,因此需要将其引用为该字段。此外,还需要对结果管理器对象使用all()方法来获取所有相关对象,以便可以迭代它们:

代码语言:javascript
运行
AI代码解释
复制
self.add_ons.all()

RentalAddOns模型实例中,可以将所有Unit模型实例引用为:

代码语言:javascript
运行
AI代码解释
复制
self.add_on_units.all()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57045721

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档