Ich möchte die Anzahl der Tiere innerhalb der angegebenen Jahreszahl jährlich zu verfolgen. So kann ich feststellen, in welchem Jahr die meisten Tiere geboren wurden. Ich verwende diese Daten für grafische Berichte.Erhalten Sie die jährliche Anzahl innerhalb der angegebenen Jahre
class Animal(models.Model):
# omitted fields..
date_of_birth = models.DateField()
Nun würden die gegebenen Jahre 2015 bis 2017. Ich möchte die Zusammenfassung von Tier innerhalb dieser Jahre geboren bekommen.
z.
[
{'year': 2015, total: 10},
{'year': 2016, total: 15}
{'year': 2017, total: 4}
]
Bisher hier ist das, was ich tat:
Animal.objects.filter(
date_of_birth__year__range = (
'2017', '2018'
)
).extra(
select={'year': 'YEAR(date_of_birth)'}
).values('year').annotate(total=Count('id')).values('year', 'total')
bekam aber diese:
[
{
"total": 1,
"year": 2015
},
{
"total": 1,
"year": 2015
},
{
"total": 1,
"year": 2015
},
{
"total": 1,
"year": 2015
},
... and so on to 2017
]
Es ist nicht die Gesamt hinzugefügt haben und es nicht nach Jahren gruppiert.
Wow im erstaunen Mann Danke für Ihre Antwort bietet es die richtige Lösung –