I'm stuck with a `TypeError: 'ManyRelatedManager' object is not iterable` error in Django 3.0

Here is my problem:  

I have to models `Collection` and `Element` with have a `ManyToMany` relationship.

Here are the models (I obviously omitted all the other attributes and methods which are not related to the problem):

```py
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

```

But when I try to call the Collection.total\_elements\_value proprety, I got this error:

> 
> TypeError: 'ManyRelatedManager' object is not iterable
> 
> 
> 

I don't understand. The self.elements.all() return a list as Queryset, so it should be iterable, isn't it ?

When I try this in the python shell, this works fine:

```py
c = Collection.objects.all()[0]

total = 0
for element in c.elements.all():
    total += element.total_value
return total  # Works

```

But not when I call the proprety:

```py
c = Collection.objects.all()[0]
c.total_elements_value  # Throws the error

```

I would like to know how to fix this, but more important, to understand why this doesn't work.

Thank you for your help.