valor são agregadas de duas colunas multiplicado: Django
-
18-09-2019 - |
Pergunta
Eu preciso para obter o valor agregado das duas colunas. Então, primeiro múltipla-los juntos e, em seguida, obter deles sum()
. Código abaixo naturalmente não funciona, é apenas para esclarecimentos.
É de alguma forma possível ou devo usar SQL cru?
SomeModel.objects
.filter(**something)
.aggregate(Sum('one_column' * 'another_col'))
Solução
Você não precisa que o SQL muito cru usando Extra () .
obj = SomeModel.objects.filter(**something).extra(
select = {'total': 'SUM(one_column * another_column)'},
)
Outras dicas
Como eu respondida aqui https://stackoverflow.com/a/36024089/4614802 a solução correta depende Django versão.
- Para Django <1,8 uso
.aggregate(Sum('field1', field="field1*field2"))
- Para Django> = 1,8 uso
.aggregate(Sum(F('field1')*F('field2'))
Esta é Esparta. Desta forma, se você quiser imprimi-lo em algum lugar em um modelo que você tem que usar algo como isto:
{{ queryset.0.total }}
Este foi corretamente respondida aqui: Django Agregação: Soma de Multiplicação de dois campos
O formulário é:
agg = Task.objects.all().aggregate(total=Sum('field1', field="field1*field2"))
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow