Как получить только записи за последний месяц, имеющиеся в базе данных, используя queryset django?

Мне нужно получить только объекты последнего месяца, присутствующего в БД. Я имею в виду не последние 30 дней или последний календарный месяц, а самый последний месяц, записанный в БД... Я видел, что в django есть функция latest(), которая возвращает самый последний объект в таблице на основе заданного поля (полей), однако я хочу, чтобы она возвращала несколько объектов на основе заданного месяца.

revisoes = Revisao.objects.filter(apicultor__in=apicultores).order_by('-data_registro')

Этот набор запросов я использую, только он возвращает все ревизии для данного пчеловода. Мне нужно, чтобы он возвращал только ревизии, основанные на последнем месяце поля "data_registro"

Вы можете определить предыдущий месяц с помощью объекта relativedelta [readthedocs.io] пакета dateutil [readthedocs.io] и использовать его для получения элементов за последний месяц:

from dateutil.relativedelta import relativedelta
from django.utils.timezone import now

revisoes = Revisao.objects.filter(
    apicultor__in=apicultores, data_registro__gte=now()-relativedelta(months=1)
).order_by('-data_registro')

SOLUTION: Я решил свою проблему следующим образом:

meses = [obj.data_registro for obj in revisoes]
ultimo_mes = max(meses)
ultimo_mes = ultimo_mes.strftime("%Y-%m")
revisoes_recentes = Revisao.objects.filter(apicultor__in=apicultores, data_registro__contains=ultimo_mes)
Вернуться на верх