1

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

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
4

2 回答 2

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

希望有帮助。

于 2013-07-13T21:45:03.000 回答
3

由于您使用的是 Django,因此您可以这样做:

invoice_date = i.item_set.order_by('due_date')[0].due_date
于 2013-07-13T22:07:23.273 回答