2010-11-21 3 views
0

У меня есть модель ()) с 2 полями, называемыми , и to_date. Мне просто нужен объект с конкретным именем, и это максимум to_date.Django - фильтр QuerySet - расчесывание 2 условия

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

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

ответ

2

Чтобы получить один объект заказанного valid_to:

obj = Delivery.objects.filter(name='name1', to_date=my_date).order_by('-valid_to')[0] 
+0

Макс ('valid_to') отсутствует –

+0

Я думал, что это ошибка, так как valid_to не упоминается как поле. Могли бы вы опубликовать модель? Обновленный код, отражающий то, что, как я думаю, вы пытаетесь достичь – sunn0

1

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

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) 

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

Смежные вопросы