Django ORM данных на основе максимальной группы дат

модель

class quote(models.Model):
    id = models.AutoField(primary_key=True)
    stock = models.ForeignKey(stock, related_name='stock', on_delete=models.CASCADE)
    price = models.DecimalField(max_digits=30,decimal_places=5)
    valid_till = models.DateTimeField()
    created_at = models.DateTimeField() #time
    updated_at = models.DateTimeField(blank=True,null=True)

ex data

id stock price valid_till created_at
1. 1.    200.  09 April.   09 April 
2. 1.    300.  10 April.   09 April 

выходное желание

id stock price valid_till created_at
2. 1.    300.  10 April.   09 April 

Мне нужна запись только для максимальной даты каждой акции

в настоящее время делаем так quote.objects.values('stock__symbol').annotate(max_date=Max('valid_till')))

но все еще не в состоянии подумать о правильном решении

Вот два метода для получения цитаты (цитат) с максимальной датой. Используя этот набор запросов, вы можете затем найти любые связанные экземпляры модели, которые вам нужны.

  1. Найти максимальное значение с помощью метода aggregate(), затем выполнить запрос, фильтрующий максимальное значение
# returns a dict containing your max_date
aggregation = quote.objects.aggregate(max_date=Max('valid_till'))

# get max_date from dict
max_date = aggregation['max_date']

#filter quotes based on max_date
max_date_quotes = quote.objects.filter(valid_till = max_date)
  1. Упорядочить по valid_till. Это предполагает, что у вас есть одна максимальная дата.
max_date_quote = quote.objects.all().order_by('-valid_till').first()
Вернуться на верх