我有以下模型,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 记录的 Art,但不排除日期范围外的 ArtScore 记录。
任何如何实现这一点的指针将不胜感激!
谢谢,
马丁