Как отфильтровать объекты, чья дата создания превышает 30 дней
Вот, у меня есть модель
from django.db import models
class Product(models.Model):
name=models.CharField(max_length=100)
created_at=models.DateTimeField(auto_now_add=True)
Я хочу получить все те объекты, дата которых превышает 30 дней с момента создания, таким образом, но это не работает.
Есть ли способ взломать этот сценарий
?from django.db.models import F
from django.utils import timezone
Product.objects.annotate(diff_date=(timezone.now()-F('created_at'))).filter(diff_date__days__gte=30)
Вам не нужно делать аннотацию и фильтр, вы можете просто установить фильтр для отбора дат, которые находятся до 30 дней назад, как например:
from datetime import timedelta
from django.utils import timezone
thirty_days_ago = timezone.now() - timedelta(days=30)
Product.objects.filter(created_at__lte=thirty_days_ago)