Django - фильтр QuerySet - прочесывает 2 условия - PullRequest
0 голосов
/ 21 ноября 2010

У меня есть модель ( Доставка ) с 2 полями, которые называются name и to_date .Мне просто нужен объект с конкретным именем, и это максимум to_date.

Delivery.objects.filter(name__exact = 'name1').aggregate(Max('valid_to'))

Приведенный выше запрос вернет максимальную дату.Можно ли получить полный объект?

Ответы [ 2 ]

2 голосов
/ 21 ноября 2010

Чтобы получить один объект, упорядоченный по valid_to:

obj = Delivery.objects.filter(name='name1', to_date=my_date).order_by('-valid_to')[0]
1 голос
/ 21 ноября 2010

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

maximum_to_date = Delivery.objects.filter(name__exact='name1').aggregate(maximum to_date=Max('valid_to'))
result = Delivery.objects.filter(valid_to=maximum_to_date)

Обратите внимание, что вам нужно filter () во второй строке, потому что две или более поставок могут иметь одинаковое значение valid_to.В таком случае вы можете либо принять их все, либо, например, взять с наименьшим идентификатором, в зависимости от того, что вам нужно.

...