Hmm, Sie verwenden Count
, sollten Sie Sum
verwenden , und values()
bestimmt, was in GROUP BY
kommt Sie sollten also values('datetime')
verwenden nur. Ihr Abfragesatz sollte in etwa so aussehen:
from django.db.models import Sum
values = self.model.objects.filter(
datetime__range=(self.dates[0], self.dates[1])
).values('datetime').annotate(data_sum=Sum('data'))
obwohl ich mir über die Reihenfolge des filter()
nicht so sicher bin , es könnte also Folgendes sein:
values = self.model.objects.values('datetime').annotate(data_sum=Sum('data')).filter(
datetime__range=(self.dates[0], self.dates[1])
)
Ich schätze, du würdest dann beides ausprobieren wollen. Wenn Sie die rohe Abfrage dieses Abfragesatzes sehen möchten, verwenden Sie Queryset.query
:
print self.model.objects.filter(
datetime__range=(self.dates[0], self.dates[1])
).values('datetime').annotate(data_sum=Sum('data')).query.__str__()
So können Sie sicherstellen, dass Sie die richtige Abfrage erhalten.
Hoffe es hilft.