Вы вызываете float
для такого объекта:
float({'rating__avg': 2.0})
А не для десятичного значения.
Попробуйте изменить свой код следующим образом:
def average_rating(self):
ratings = self.rating_set.all().aggregate(Avg('rating'))['rating__avg']
if ratings is Not None:
return round(float(ratings), 2)
return None
this:
model.objects.all().aggregate(...)
вернет {'rating__avg', None}
, если результирующий запрос из model.objects.all()
будет пустым.
Я действительноне уверен, почему это происходит в вашем коде.