Агрегирование Django переопределяет значения в запросе - PullRequest
0 голосов
/ 18 апреля 2019

Я пытаюсь показать некоторые данные, используя абстракцию базы данных django.

Мне нужно показать общее количество автомобилей в этом году и его общее количество.

Моя попытка:

Cars.objects.filter(car__updated__year=datetime.now().year).values("car_id")).annotate(total=Sum("quantity")).values_list("title", "quantity").aggregate(Max("quantity"))

Мой ожидаемый результат:

{
    "cars": {
        "title": "toyota",
        "quantity__max": 8,
    }
}

Но .aggregate(Max("quantity")) переопределяет "title", и я получаю это:

{
    "cars": {
        "quantity__max": 8,
    }
}

Без .aggregate (Max (" quantity ")) значения появляются (кроме итогов, конечно).

1 Ответ

1 голос
/ 19 апреля 2019

Существует два способа агрегирования информации в наборе запросов . Метод aggregate() просто дает сводку, а НЕ остальную информацию в наборе запросов. Исходя из ожидаемого результата, вы, вероятно, должны вместо этого использовать annotate(), что добавит ваше агрегированное значение к значениям набора запросов.

...