I know if I have the following tables ...
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()
... I can get the last 3 letters with the latest letter versions by doing:
lettersAll = Letter.objects.filter(
item=i_iID,
deleted__isnull=True
).annotate(
last_created_version=Max('letterversion__created')
).order_by('-last_created_version')[:3]
My question is the above query is for all letter versions for a set letter. What happens if I only want to query all letter versions for a letter up to a set date (like letterversion__lt
)?
If I understand what you are asking, this should make the query work:
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]
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.