【发布时间】:2016-09-22 20:01:28
【问题描述】:
我有一个Review 模型和一个ReviewScore ForeignKey'd,代表某个时间点的分数。简化后如下所示:
class Review(models.Model):
# Nothing interesting here.
class ReviewScore(models.Model):
review = models.ForeignKey(Review)
date = models.DateField()
score = models.IntegerField()
class Meta:
ordering = ("-date",)
在我看来,我希望使用 ReviewScore 表中最近一行的值 score 来注释 Review 查询集(具体来说,我确实不想要一个平均值),这样我可以按评论的最新分数进行排序。
我试过.annotate(score=F("reviewscore__score")) 但这会返回多行;因此它返回重复的Reviews,每个都用不同的ReviewScore 分数注释,并且使用distinct 无法解决这个问题,因为Postgres 要求distinct 必须匹配ORDER BY 表达式。
这可能吗?我可以以某种方式过滤或限制使用.annotate 返回外部表的结果,或者使其仅使用ReviewScore 表中的第一个结果进行注释吗?
【问题讨论】:
标签: python django django-orm