Django - QuerySet过滤器 - 梳理2个条件

时间:2010-11-21 13:59:36

标签: django django-models django-queryset

我有一个模型(交付),其中包含2个名为 name和to_date 的字段。我只需要一个具有特定名称的对象,它的最大值为to_date。

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

上述查询将返回最大日期。是否可以获取完整的对象?

2 个答案:

答案 0 :(得分:2)

获取由valid_to命令的单个对象:

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

答案 1 :(得分: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)

请注意,您需要在第二行中使用filter(),因为两个或多个Deliveries可能具有相同的valid_to值。在这种情况下,您可以接受所有这些,或者例如取一个ID最小的那个,取决于你需要的。