我试图在代码中引用Units
和Add-Ons
之间的Add-Ons
连接,以启用提供价格的方法,但我似乎无法在模型方法中引用这种关系,有人能指出正确的方向吗?
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
发布于 2019-07-15 11:04:55
由于您已经在此模型中定义了字段,因此需要将其引用为该字段。此外,还需要对结果管理器对象使用all()
方法来获取所有相关对象,以便可以迭代它们:
self.add_ons.all()
在RentalAddOns
模型实例中,可以将所有Unit
模型实例引用为:
self.add_on_units.all()
https://stackoverflow.com/questions/57045721
复制相似问题