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



当用户付款过期2天时,我正在尝试从付款模型中检索数据。以下代码是我已经尝试的。

expected_payment_date = datetime.date.today() + datetime.timedelta(+int(2))
users = Payment.objects.filter(expected_payment_date=expected_payment_date)
expected_payment_date = datetime.date.today() + datetime.timedelta(-int(2))
users = Payment.objects.filter(expected_payment_date=expected_payment_date)

我认为它将不起作用,因为它会创建一个设置为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)

我使用的是 标志而不是 - 符号

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

最新更新