您好我有这个查询集:
visitas =
Visitas_Paciente.objects.filter(fecha__range= g.get('fecha_inicio'),
g.get('fecha_fin'))).values('paciente_id').annotate(numeros=
Sum('numero')).filter(qNumeroVisitas).order_by('numeros')
使用这个等效的SQL:
SELECT `ES_visitas_paciente`.`paciente_id`,
SUM(`ES_visitas_paciente`.`numero`) AS `numeros` FROM
`ES_visitas_paciente` WHERE `ES_visitas_paciente`.`fecha`
BETWEEN 2012-01-01 AND 2013-01-01 GROUP BY
`ES_visitas_paciente`.`paciente_id` HAVING
SUM(`ES_visitas_paciente`.`numero`) >= 4 ORDER BY `numeros` ASC
问题是我不想要'numeros'列,我只想要id,就像这个查询:
SELECT
`ES_visitas_paciente`.`paciente_id`
FROM `ES_visitas_paciente`
WHERE `ES_visitas_paciente`.`fecha` BETWEEN '2012-01-01' AND '2013-01-01'
GROUP BY `ES_visitas_paciente`.`paciente_id`
HAVING SUM(`ES_visitas_paciente`.`numero`) > 4
请帮助我:(
答案 0 :(得分:0)
基本上我们需要限制选择。我们可以通过添加额外的.values(paciente_id)
来实现此目的。这是一个documentation
在此之后我们将
visitas = Visitas_Paciente.objects.filter(
fecha__range=(g.get('fecha_inicio'),g.get('fecha_fin'))
).values(
'paciente_id'
).annotate(
numeros=Sum('numero')
).filter(
numeros > 4
).order_by(
'numeros'
).values(
'paciente_id'
)
我们
注意 - 有2个值('paciente_id')语句。
希望它有所帮助!