Akram
Akram

Reputation: 1266

How to filter in django using adding days to existing dates

class Payment(models.Model):
    name = models.CharField()
    payment_date = models.DateField()

Example

Table Payment

id   name  payment_date
1    A     2022-01-01
2    B     2022-01-02
3    C     2022-01-02
4    D     2022-01-06

Suppose the due date for each payment is payment_date+10 days. Suppose iam checking on the date '2022-01-12' the records which are due is

2022-01-01 + 10 days = 2022-01-11 Due
2022-01-02 + 10 days = 2022-01-12 Due
2022-01-06 + 10 days = 2022-01-16 Not Due

So my sample output should be

Sample:
<QuerySet [<Payment: A>, <Payment: B>, <Payment: C>]>

Upvotes: 1

Views: 1052

Answers (2)

Brian Destura
Brian Destura

Reputation: 12078

You can do:

from datetime import timedelta
from django.utils import timezone

Payment.objects.filter(
    payment_date__lte=timezone.now() - datetime.timedelta(days=10)
)

Upvotes: 3

Abdul Raffay
Abdul Raffay

Reputation: 179

you can use timedelta

from datetime import timedelta

you can now add days to your datetime objects like this and then filter on basis of that date

new_date = payment_date+timedelta(days=10)
    

Upvotes: 0

Related Questions