Python Django获取最新值和聚合值

Python Django获取最新值和聚合值,python,django,django-models,orm,django-queryset,Python,Django,Django Models,Orm,Django Queryset,我有一个模型,我想从中获取最新的值,即最近添加的项目中的值,以及一段时间内的聚合值。我可以在单独的查询集中得到答案,然后在Python中统一它们,但我觉得应该有更好的ORM方法来解决这个问题。有人知道怎么做吗 简化示例: Class Rating(models.Model): movie = models.ForeignKey(Movie, related_name="movieRatings") rating = models.IntegerField(blank=True

我有一个模型,我想从中获取最新的值,即最近添加的项目中的值,以及一段时间内的聚合值。我可以在单独的查询集中得到答案,然后在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上加入他们


谢谢大家!

根据以下内容尝试此解决方案:


我建议您使用@property decorator将属性方法(每月_评级)添加到评级模型中,而不是在视图中计算。py:

@property
def monthly_rating(self):
    return 'calculate your avg rating here'
@property
def monthly_rating(self):
    return 'calculate your avg rating here'