У меня есть следующие модели, Art и ArtScore:
class Art(models.Model):
title = models.CharField()
class ArtScore(models.Model):
art = models.ForeignKey(Art)
date = models.DateField(auto_now_add = True)
amount = models.IntegerField()
Некоторые действия пользователя приводят к записи в ArtScore, например, когда вы нажимаете «Мне нравится это искусство», я сохраняю определенное количество ArtScore для этого искусства.
Сейчас я пытаюсь показать страницу «самой популярной на этой неделе», поэтому мне нужен запрос, объединяющий только суммы ArtScore для этого временного диапазона.
Я построил приведенный ниже запрос, но он некорректен ...
popular = Art.objects.filter(
artscore__date__range=(weekago, today)
).annotate(
score=Sum('artscore__amount')
).order_by('-score')
... потому что он исключает только Art, у которого нет записи ArtScore в диапазоне дат, но не исключает записи ArtScore за пределами диапазона дат.
Буду признателен за любые указания, как этого добиться!
Спасибо
Martin