0

我知道我是否有以下表格...

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 个带有最新字母版本的字母:

lettersAll = Letter.objects.filter(
                 item=i_iID,
                 deleted__isnull=True
             ).annotate(
                 last_created_version=Max('letterversion__created')
             ).order_by('-last_created_version')[:3]

我的问题是上述查询适用于一组字母的所有字母版本。如果我只想查询所有字母版本的某个字母(如letterversion__lt),会发生什么情况?

4

1 回答 1

0

如果我明白你的要求,这应该使查询工作:

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]
于 2013-03-21T16:55:49.843 回答