这个日期检查是否更简洁?

时间:2013-07-13 21:42:41

标签: python django

每张发票可能有多个项目,发票到期日期是最早到期日期的日期。这就是我所拥有的,但我想知道是否有更短的版本:

due_date = None

for item in i.item_set.all():
    if due_date is None:
        due_date = item.due_date
    else:
        if due_date > item.due_date:
            due_date = item.due_date

2 个答案:

答案 0 :(得分:3)

您是否尝试过min

due_date = min((item.due_date for item in i.item_set.all()))

或者,另一种选择:

from operator import attrgetter
due_date = min(i.item_set.all(), key=attrgetter("due_date")).due_date

希望有所帮助。

答案 1 :(得分:3)

由于你正在使用Django,你可以这样做:

invoice_date = i.item_set.order_by('due_date')[0].due_date