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 に答える