Вывести среднее количество просмотров всех постов на сайте
Есть модель страницы с полем 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)
Всё работает, но меня интересует, можно ли это сделать как-то по другому?
Ответы (1 шт):
Автор решения: Leonid
→ Ссылка
В Django ORM есть функция Avg(). Ее можно использовать для вычисления среднего арифметического:
from django.db.models import Avg
from myapp.models import Post
views_res = Post.objects.aggregate(Avg('views'))['views__avg']
Здесь мы использовали метод aggregate() модели для вычисления среднего значения views по всем записям. Avg('views') указывает ORM вычислить среднее значение для поля views. Метод aggregate() возвращает словарь, в котором ключ 'views__avg' соответствует вычисленному среднему значению.
Думаю должно сработать.