Фильтрация QuerySet

У меня есть QuerySet

data =  <QuerySet [<EquipmentCondition: Режим работы Устр-1>, 
                   <EquipmentCondition: Режим работы Устр-1>, 
                   <EquipmentCondition: Режим работы Устр-1>, 
                   <EquipmentCondition: Режим работы Устр-2>, 
                   <EquipmentCondition: Режим работы Устр-2>, 
                   <EquipmentCondition: Режим работы Устр-2>]>

По которому я получаю JSON следующего вида:

[
    {
        "id_gpu": 2,
        "operating_mode": "circle",
        "creation_date": "2022-11-14T13:37:04.119371+07:00"
    },
    {
        "id_gpu": 2,
        "operating_mode": "circle",
        "creation_date": "2022-11-15T15:00:36.146985+07:00"
    },
    {
        "id_gpu": 2,
        "operating_mode": "thoroughfare",
        "creation_date": "2022-11-15T15:01:13.840250+07:00"
    },
    {
        "id_gpu": 3,
        "operating_mode": "circle",
        "creation_date": "2022-11-14T11:14:36.701916+07:00"
    },
    {
        "id_gpu": 3,
        "operating_mode": "thoroughfare",
        "creation_date": "2022-11-15T11:14:45.757467+07:00"
    },
    {
        "id_gpu": 3,
        "operating_mode": "reserve",
        "creation_date": "2022-11-16T11:14:59.009504+07:00"
    }
]

Подскажите, пожалуйста, как отфильтровать QuerySet, чтобы получить следующий результат:

[
    {
        "id_gpu": 2,
        "operating_mode": "thoroughfare",
        "creation_date": "2022-11-15T15:01:13.840250+07:00"
    },
    
    {
        "id_gpu": 3,
        "operating_mode": "reserve_under_gas",
        "creation_date": "2022-11-16T11:14:59.009504+07:00"
    }
]

?

Суть в том, чтобы "id_gpu" стал уникальным, с самой поздней датой создания объекта. Делаю это для сохранения истории.

Текущее решение

Я не уверен, является ли этот метод оптимальным с точки зрения производительности:

    ...
    elif specialist_on_cs and id_current_cs:
        output_list_gpu = []

        data = EquipmentCondition.objects.filter(id_gpu__id_cs=id_current_cs)

        full_list_gpu = EquipmentCondition.objects.values_list('id_gpu', flat=True).distinct()
        list_gpu = list(set(full_list_gpu))
        for gpu in list_gpu:
            one_gpu = data.filter(id_gpu=gpu).order_by('-creation_date')[0]
            output_list_gpu.append(one_gpu)

        return output_list_gpu

Ответы (0 шт):