具有日期时间约束的Django聚合

2024-03-29 13:36:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道如果我有下面的表格。。。在

class Letter(models.Model):
    item = models.ForeignKey(Item)
    name = models.CharField(max_length=40)
    created = models.DateTimeField(default=datetime.now)

    def lastVersion(self):
        return self.letterversion_set.order_by('created').latest().created

class LetterVersion(models.Model):
    letter = models.ForeignKey(Letter)
    created = models.DateTimeField(default=datetime.now)
    text = models.TextField()

。。。我可以通过以下操作获得最新版本的最后3封信:

^{pr2}$

我的问题是上面的查询是针对一个集合字母的所有字母版本。如果我只想查询某个日期之前某封信的所有版本(比如letterversion__lt),会发生什么情况?在


Tags: self版本defaultdatetimemodelmodels字母now
1条回答
网友
1楼 · 发布于 2024-03-29 13:36:03

如果我理解您的要求,这将使查询有效:

some_date = datetime.date(2012,8,12)
lettersBeforeSomeDate = Letter.objects.filter(
                 item=i_iID,
                 deleted__isnull=True,
                 letterversion__created__lt = some_date
             ).annotate(
                 last_created_version=Max('letterversion__created')
             ).order_by('-last_created_version')[:3]

相关问题 更多 >