У меня есть следующие модели 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')
... потому что он исключает только искусство, для которого нет записи ArtScore в диапазоне дат, но не исключает записи ArtScore за пределами диапазона дат.
Любые указатели, как это сделать, будут оценены!
Спасибо,
Мартин