在Django中使用注释时过滤相关对象

时间:2009-09-06 18:32:38

标签: django django-models annotations

想象一下,我有一个允许用户记笔记的系统。我有一个User模型和一个Note模型:

class User(models.Model):
    name = models.TextField()

class Note(models.Model):
    contents = models.TextField()
    user = models.ForeignKey(User)
    created_at = models.DateTimeField(auto_now_add=True)

我想在过去24小时内获得排名数量的笔记。目前我正在这样做:

User.objects.filter(note__created_at__gt=datetime.now()-timedelta(days=2)).annotate(note_count=Count('note')).order_by('-note_count')

无论我是timedelta(days = 2)还是timedelta(seconds = 1),这都会得到相同的结果

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

事实证明这种方法确实有效,这是其他地方的一个错误导致输出问题。