【发布时间】:2019-01-15 21:41:15
【问题描述】:
我有一个模型,我想从中获取最新的值,即最近添加的项目中的值,以及一段时间内的聚合值。我可以在单独的 QuerySet 中获得答案,然后在 Python 中将它们联合起来,但我觉得应该有更好的 ORM 方法来解决这个问题。有谁知道怎么弄?
简化示例:
Class Rating(models.Model):
movie = models.ForeignKey(Movie, related_name="movieRatings")
rating = models.IntegerField(blank=True, null=True)
timestamp = models.DateTimeField(auto_now_add=True)
我希望获得过去一个月的平均评分和每部电影的最新评分。
目前的做法:
recent_rating = Rating.objects.order_by('movie_id','-timestamp').distinct('movie')
monthly_ratings = Rating.objects.filter(timestamp__gte=datetime.datetime.now() - datetime.timedelta(days=30)).values('movie').annotate(month_rating=Avg('rating'))
然后我需要以某种方式加入他们的电影 ID。
谢谢!
【问题讨论】:
标签: python django django-models orm django-queryset