我正在尝试在我的代码中引用Units
和Add-Ons
之间的ManyToMany连接,以启用提供价格的方法,但是我似乎无法在Model方法中引用该关系,有人可以指出我正确的方向吗?
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
调用该方法时,出现属性错误:
'Unit' object has no attribute 'add_on_units'
简单使用self.add_ons
会得到:
'ManyRelatedManager' object is not iterable
答案 0 :(得分:1)
在此模型中定义字段后,需要这样引用它。另外,您需要在结果管理器对象上使用all()
方法来获取所有相关对象,以便可以对其进行迭代:
self.add_ons.all()
从RentalAddOns
模型实例中,您可以将所有Unit
模型实例称为:
self.add_on_units.all()