Rất tiếc, bạn đang sử dụng Count
, bạn nên sử dụng Sum
và values()
sẽ xác định những gì đi vào GROUP BY
vì vậy bạn nên sử dụng các giá trị values('datetime')
chỉ còn. Bộ truy vấn của bạn phải giống như sau:
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'))
mặc dù tôi không chắc lắm về thứ tự của filter()
, vì vậy nó có thể là:
values = self.model.objects.values('datetime').annotate(data_sum=Sum('data')).filter(
datetime__range=(self.dates[0], self.dates[1])
)
Tôi đoán bạn sẽ muốn thử cả hai sau đó. Nếu bạn muốn xem truy vấn thô của bộ truy vấn đó, hãy sử dụng Queryset.query
:
print self.model.objects.filter(
datetime__range=(self.dates[0], self.dates[1])
).values('datetime').annotate(data_sum=Sum('data')).query.__str__()
Vì vậy, bạn có thể đảm bảo rằng bạn nhận được truy vấn phù hợp.
Hy vọng nó sẽ hữu ích.