Как получить объекты моделей после группировки Django ORM?

Мне нужно сгруппировать справочники по имени и из каждой группы выбрать справочник с последней версией. Делаю так:
Handbook.objects.values('name').annotate(latest_version=Max('version'))

Модели

class Handbook(models.Model):
    name = models.CharField(max_length=128)
    short_name = models.CharField(max_length=32)
    description = models.CharField(max_length=255)
    version = models.CharField(max_length=16, blank=False)
    create_date = models.DateTimeField('date created', default=timezone.now)

    def __str__(self):
        return self.name

    class Meta:
        unique_together = [['name', 'version']]


В результате получается лист словарей с именем и версией. Нужны объекты моделей или словари со всеми полями модели. Как это сделать? Делать запросы для каждого словаря? (такой вариант кажется не очень разумным)
  • Вопрос задан
  • 81 просмотр
Пригласить эксперта
Ответы на вопрос 1
alternativshik
@alternativshik
Непонятно, какие поля модели должны быть если там могут быть разные данные, а уникальные только имя и версия. Version вообще строка и как там найти Max() тоже неясно

Например -
name = foo
short_name = foo_1
description = 'Foo description'
version = v1

второй объект будет с

name = foo
short_name = foo_1_1
description = 'Foo description 1'
version = v2

После группировки будет {"name": "foo", "version": v2} и какие брать short_name и description в таком случае?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы