У меня есть модель, которая записывает данные о том, когда пользователь смотрел видео:
class VideoViewed(models.Model):
user = models.ForeignKey(Employee, on_delete=models.CASCADE)
video = models.ForeignKey(Video, on_delete=models.CASCADE)
date_time = models.DateTimeField(default=timezone.now)
Из набора запросов я бы хотел, чтобы каждый объект в наборе запросов сохранял значение, которое представляет собой накопленную сумму всего видео, просмотренных этим конкретным пользователем c до этого момента.
В настоящее время у меня есть эта аннотация:
queryset = queryset.annotate(
user_views_cumsum=Window(Sum('video'),
order_by=F('date_time').asc()))\
.values('user', 'video', 'date_time', 'id', 'user_views_cumsum').order_by('date_time', 'user_views_cumsum')
, которую я хочу дать Queryset:
<QuerySet [
{'user': 2, 'video': 13, 'date_time': datetime, 'id': 5, 'user_views_cumsum': 1},
{'user': 2, 'video': 13, 'date_time': datetime, 'id': 6, 'user_views_cumsum': 2},
{'user': 4, 'video': 13, 'date_time': datetime, 'id': 7, 'user_views_cumsum': 1},
{'user': 2, 'video': 13, 'date_time': datetime, 'id': 8, 'user_views_cumsum': 3},
{'user': 2, 'video': 13, 'date_time': datetime, 'id': 9, 'user_views_cumsum': 4},
{'user': 4, 'video': 13, 'date_time': datetime, 'id': 10, 'user_views_cumsum': 2}
]>
Но дает мне сумму идентификатора видео, так что выглядит так:
<QuerySet [
{'user': 2, 'video': 13, 'date_time': datetime, 'id': 5, 'user_views_cumsum': 13},
{'user': 2, 'video': 13, 'date_time': datetime, 'id': 6, 'user_views_cumsum': 26},
{'user': 4, 'video': 13, 'date_time': datetime, 'id': 7, 'user_views_cumsum': 39},
{'user': 2, 'video': 13, 'date_time': datetime, 'id': 8, 'user_views_cumsum': 52},
{'user': 2, 'video': 13, 'date_time': datetime, 'id': 9, 'user_views_cumsum': 65},
{'user': 4, 'video': 13, 'date_time': datetime, 'id': 10, 'user_views_cumsum': 78}
]>
Есть 2 проблемы. Мне нужно отделить user_views_cumsum
, чтобы он составлял только просмотров видео каждого пользователя , и мне нужно добавить cumsum просмотров видео каждого пользователя вместо id
.
Мысли?