Django фильтр со свойствами последнего объекта

Я пытаюсь рефакторить этот кусок кода, чтобы улучшить временную сложность за счет уменьшения количества циклов.

items = DataActionItem.objects.filter(status='resolved', site_id=settings.SITE_ID)
resolved = []
for item in items:
    init = [resolved.history_date for resolved in 
                item.history.filter(status='resolved',
                history_date__lte=datetime.datetime.today(),
                history_date__gt=datetime.datetime.today() - datetime.timedelta(
                days=7)) if getattr(resolved.prev_record, 'status') != 'resolved']
                resolved.append(max(init).date())
rc = Counter()
rc.update(resolved)

Пока вот что у меня есть.

DataActionItem.history.filter(site_id =40, status='resolved',
 history_date__lte=datetime.datetime.today(), 
history_date__gt=datetime.datetime.today()-datetime.timedelta(days=7)).values('id',
'history_date').distinct().annotate(day=TruncDate('history_date'),
).values('day').annotate(n=Count('id')).order_by('day')

Во время написания этого запроса я застрял на моменте, когда проверял предыдущий объект. См. ниже.

getattr(resolved.prev_record, 'status') != 'resolved'

Я хотел бы сравнить каждый объект в наборе запросов с последним объектом и вернуть только те, у которых их предыдущие объекты истории не имеют разрешенного статуса.

Если кто-то может помочь мне сократить количество циклов в исходном запросе, это будет замечательно.

Вернуться на верх