Это вопрос продолжения из:
Набор запросов Django получает различные значения столбца относительно другого столбца
Моя проблема:
Использование агрегатного подсчета в Django подсчитывает неправильную вещь в наборе запросов, или, насколько я вижу, чего-то, чего нет даже в моем наборе запросов.
То, что я сделал Я использовал:
queryset.order_by('col1', 'col2').distinct('col1', 'col2').values('col2')
, чтобы получить значения col2
модели, в которой все строки имеют различную пару значений в (col1, col2)
.Пример есть по ссылке выше.Я напечатал свой набор запросов, и он выглядит хорошо, у меня есть
[{'col2': value1}, ... , {'col2': value1},{'col2': value2}, ..., {'col2': value2},...]
Теперь я хочу подсчитать, сколько каждого значения появляется в наборе запросов, который я получил.Я делаю это с помощью счетчика агрегации.У меня есть:
a = {'count': Count(F(col2), distinct=False)}
queryset.annotate(**a)
Я пробовал это также с `` Different = True ', но не повезло
Я ожидал бы получить [{col2:value1, count: num1}, {col2:value2, count: num2} ...]
.
Вместо этого я получил [{col2: value1, count: num11}, {col2: value1, count: num12}, ... ,{col2: value1, count: num_1n}, {col2: value2, count: num21}, ... ,{col2: value1, count: num_2n}, ...]
.Где, насколько я могу судить, num11, ...., num_1n - это количество строк value1, существовавших в col2, с любым конкретным значением в col1, предшествовавшим мне, используя order_by('col1', 'col2').distinct('col1', 'col2').values('col2')
при подготовке запроса.
Iне могу понять, что может вызвать это.Я попытался посмотреть в параметре queryset.query
, но я не могу понять, где я иду не так.
Любая помощь будет принята с благодарностью.