Как использовать __range в Django

class Order(models.Model):
     customer = models.ForeignKey('Customer' , on_delete=models.SET_NULL , null= True , blank = 
      True)
     date_ordered = models.DateTimeField(auto_now_add = True)

У меня есть это в модели заказа. Теперь я хочу взять order.objects.filter и взять только те данные, дата_заказа которых находится между , дата_заказа и ( дата_заказа + 7 дней ) . Возможно ли это с помощью __range или нет ?

Вы можете фильтровать с помощью:

from datetime import timedelta
from django.db.models.functions import Now

Order.objects.filter(
    date_ordered__range=(
        Now()-timedelta(days=7), Now()
    )
)

Если вы хотите сопоставить с датой, а значит не 24×7 часов назад, вы можете работать с:

from datetime import timedelta
from django.utils.timezone import now

today = now().date()
before = today()-timedelta(days=7)

Order.objects.filter(
    date_ordered__date__range=(
        before, now
    )
)
Вернуться на верх