##models.py
from django.db import models
from django.contrib.auth.models import User
import numpy as np
class Wine(models.Model):
name=models.CharField(max_length=200)
def average_rating(self):
all_ratings = map(lambda x: x.rating, self.review_set.all())
return np.mean(all_ratings)
def __unicode__(self):
return self.name
为什么会出现此错误?第7行出了什么问题?
答案 0 :(得分:3)
不确定为什么要使用numpy。您可以自己轻松计算平均值,但为什么不让数据库通过其聚合功能来实现呢?
from django.db.models import Avg
...
def average_rating(self):
return self.review_set.aggregate(Avg('rating'))['rating__avg']
答案 1 :(得分:0)
这对你有用: -
from django.db import models
from django.contrib.auth.models import User
import numpy as np
class Wine(models.Model):
name=models.CharField(max_length=200)
def average_rating(self):
all_ratings = list(map(lambda x: x.rating, self.review_set.all()))
return np.mean(all_ratings)
def __unicode__(self):
return self.name
答案 2 :(得分:0)
这应该对您有用:更改
return np.mean(all_ratings)
到
return np.mean(list(all_ratings))
对我有用 谢谢
答案 3 :(得分:0)