Сначала нам нужно рассчитать предыдущий месяц. Например, мы можем использовать relativedelta
[python-doc] из пакета python-dateutil
[PyPi] . Таким образом, мы можем установить этот пакет с:
pip install <b>python-dateutil</b>
Затем мы можем отфильтровать Product
s так, чтобы мы получили все Product
s, которые были добавлены после или один prev_month
с prev_month
объектом datetime
, который ровно месяц назад:
from dateutil.relativedelta import <b>relativedelta</b>
from django.utils.timezone import <b>now</b>
def all_products(request):
all_products = Product.objects.all()
<b>prev_month = now() - relativedelta(months=1)</b>
recently_added_products = Product.objects.filter(<b>added__gte=prev_month</b>)
context = {'all_products':all_products,'recent_products':recent_products}
return render(request,'products_list.html',context)
Таким образом, мы используем __gte
lookup для фильтрации всех Product
с датой added
больше, чем месяц назад.
Примечание : если вы часто фильтруете, может быть лучше добавить
db_index=True</b>
[Django-doc] в поле
added
:
class Product(models.Model):
# ...
added = model.DateTimeField(auto_now_add=True<b>, db_index=True</b>)