当用户的付款逾期2天时,从Django模型检索数据

2024-10-01 16:30:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图检索数据从我的付款模式,当一个用户的付款逾期2天。下面的代码是我已经尝试过的。你知道吗

expected_payment_date = datetime.date.today() + datetime.timedelta(+int(2))

users = Payment.objects.filter(expected_payment_date=expected_payment_date)

Tags: 数据代码用户todaydatetimedateobjects模式
2条回答

我用的是+号而不是-号

expected_payment_date = datetime.date.today() + datetime.timedelta(-int(2))
expected_payment_date = datetime.date.today() + datetime.timedelta(-int(2))

users = Payment.objects.filter(expected_payment_date=expected_payment_date)

我认为它不会工作,因为它创建了一个datetime对象,其时间值设置为0,所以数据库中的时间不匹配。你知道吗

有了上面的代码,你可能会得到一个付款对象列表,它从上到下过期了,如果超过3/4/5天的超额怎么办??你知道吗

如果您希望日期介于当前月/年的开始日期到(当前日期-昨天前2天/过期2天)之间,可以使用“大于等于”和“小于等于”执行以下操作:

import datetime
from datetime import date
from datetime import timedelta

startDate = date(2017, 1, 1) # start date
endDate = date.today() - timedelta(days=2) # end date  > day before yesterday.
payments = Payment.objects.filter(expected_payment_date__gte=startDate,
                                expected_payment_date__lte=endDate)

另一种方法:只需使用__range

        startDate = date(2017, 1, 1) # start date
        endDate = date.today() - timedelta(days=2) # Day before Yesterday.
        Payment.objects.filter(expected_payment_date__range=[startDate, endDate])      

注意:在付款模型中应该有一个布尔标志,它会告诉你付款是已付款还是到期,比如说我们在付款中添加isDue标志,然后当你得到付款时将它设置为False,直到你得到付款为止,它将是True。 然后你可以这样做:

Payment.objects.filter(expected_payment_date__range=[startDate, endDate], isDue=True)

相关问题 更多 >

    热门问题