Métodos count e aggregate no Django
Método count
Para calcular a quantidade de registros em um QuerySet, é possível utilizar o método count()
acount()
from .models import Person
number = Person.objects.count()
print(number)
Esse método é equivalente a uma consulta SQL SELECT COUNT(*)
Também é possível calcular a quantidade de registros usando a função len()
from .models import Person
people = Person.objects.all()
number = len(people) # Número de registros no conjunto people
print(number)
Quando utilizar count
len
Se os registros já tiverem sido carregados anteriormente (como ao chamar o método all()
len()
count()
Método aggregate
O método aggregate()
: Calcula a soma.Sum
: Calcula a média.Avg
: Retorna o menor valor.Min
: Retorna o maior valor.Max
Essas classes recebem como parâmetro o campo sobre o qual o cálculo será realizado. Exemplos de uso:
from .models import Person
from django.db.models import Sum, Avg, Min, Max
# Soma de todas as idades
total_age = Person.objects.aggregate(Sum("age"))
print(total_age)
# Média de idades
avg_age = Person.objects.aggregate(Avg("age"))
print(avg_age)
# Menor idade
min_age = Person.objects.aggregate(Min("age"))
print(min_age)
# Maior idade
max_age = Person.objects.aggregate(Max("age"))
print(max_age)
Esses métodos são úteis para extrair informações como soma, média, mínimo e máximo, sem a necessidade de carregar todos os registros em memória.