Как использовать __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
)
)