有一个带有views字段(IntegerField)的页面模型,需要计算数据库中所有页面访问次数的算术平均值。
我这样做了
posts = Post.objects.all()
views_all = 0
for post in posts:
views_all += post.views
views_res = views_all/len(posts)
print(views_res)
一切正常,但我想知道是否可以以不同的方式完成它?
有一个带有views字段(IntegerField)的页面模型,需要计算数据库中所有页面访问次数的算术平均值。
我这样做了
posts = Post.objects.all()
views_all = 0
for post in posts:
views_all += post.views
views_res = views_all/len(posts)
print(views_res)
一切正常,但我想知道是否可以以不同的方式完成它?
Django ORM 具有 Avg() 函数。它可以用来计算算术平均值:
在这里,我们使用
aggregate()模型方法计算views所有记录的平均值。Avg('views')告诉 ORM 计算字段的平均值views。该方法aggregate()返回一个字典,其中“views__avg”键对应于计算出的平均值。我认为它应该工作。