TypeError: 'ManyRelatedManager' object is not iterable我在 Django 3.0 中遇到错误
这是我的问题:
我必须Collection与模型Element建立关系ManyToMany。
这是模型(我显然省略了与问题无关的所有其他属性和方法):
class Collection(models.Models):
elements = models.ManyToManyField(Element, related_name="collections")
@proprety
def total_elements_value(self):
total = 0
for element in self.elements.all(): # The problem is on this line !
total += element.total_value
return total
class Element(models.Models):
value1 = models.IntegerField()
value2 = models.IntegerField()
@proprety
def total_value(self):
return self.value1 + self.value2
但是当我尝试调用 Collection.total_elements_value 属性时,出现了这个错误:
TypeError: 'ManyRelatedManager' 对象不可迭代
我不明白。self.elements.all() 返回一个列表作为查询集,所以它应该是可迭代的,不是吗?
当我在 python shell 中尝试这个时,它工作正常:
c = Collection.objects.all()[0]
total = 0
for element in c.elements.all():
total += element.total_value
return total # Works
但不是当我打电话给物业时:
c = Collection.objects.all()[0]
c.total_elements_value # Throws the error
我想知道如何解决这个问题,但更重要的是,了解为什么这不起作用。
感谢您的帮助。
千万里不及你
收到一只叮咚
相关分类