Извлечь последнюю запись из модели в Джанго - PullRequest
4 голосов
/ 26 мая 2011

Допустим, у меня есть следующая модель Django:

class Info(models.Model):
    instrument = models.ForeignKey('Instrument')
    date = models.DateTimeField()

Как мне извлечь запись с самой новой датой для каждого инструмента?

Ответы [ 2 ]

3 голосов
/ 26 мая 2011

Попробуйте это:

Instrument.objects.all().annotate(max_date=models.Max("info__date"))

Он вернет список всех инструментов, и каждый инструмент будет иметь дополнительный атрибут max_date, который содержит самую последнюю дату для этого инструмента.

0 голосов
/ 26 мая 2011

Если вы хотите получить самую последнюю запись Info для каждого инструмента, вы можете сделать что-то вроде этого:

latest_notes = []
for instrument in Instrument.objects.all():
    latest_note = instrument.info_set.order_by('-date')[0]
    latest_notes.append(latest_note)

Это может или не может быть осуществимо в зависимости от того, сколько Instrument записей выесть.

...