Я использую Django и Python 3.7.У меня есть эти модели ...
class Article(models.Model):
website = models.ForeignKey(Website, on_delete=models.CASCADE, related_name='articlesite')
title = models.TextField(default='', null=False)
path = models.TextField(default='', null=False)
url = models.TextField(default='', null=False)
created_on = models.DateTimeField(db_index=True, default=datetime.now)
class ArticleStat(models.Model):
objects = ArticleStatManager()
article = models.ForeignKey(Article, on_delete=models.CASCADE, related_name='articlestats')
elapsed_time_in_seconds = models.IntegerField(default=0, null=False)
hits = models.FloatField(default=0, null=False)
Я хочу написать запрос Django, который возвращает два столбца данных - elapsed_time_in_seconds (из модели ArticleStat выше) и среднее число попаданий для этого конкретного интервала,Есть несколько других ограничений в миксе.Я понятия не имею, как это сделать.Я попробовал следующее
qset = ArticleStat.objects.annotate(avg_score=Avg(F("hits")),
hour=(Func(
Func(
F("article__created_on"), function='HOUR FROM'),
function='EXTRACT'))).filter(
article__website=website,
hour=hour)
, но это приводит к ошибке «Ошибка типа: ожидаемая строка или байтовоподобный объект».Я запутался в том, как указать часть «GROUP BY» в моем операторе SQL, а затем запутался в том, как вернуть два столбца данных, которые мне нужны, поскольку я думаю, что приведенное выше возвращает только объекты ArticleStat, которые нетам нет моего среднего.