Вот мой Django модель:Почему django.db.models.Avg() возвращает объект datetime? И почему это неправильно?
class MyModel(models.Model):
a = IntegerField()
b = DateTimeField()
Вот QuerySet я исполняю на этой модели, чтобы найти количество, мин, макс и среднее b
сек для каждого значения a
:
>>> MyModel.objects.values('a').annotate(count=Count("b"), min=Min('b'), max=Max('b'), avg=Avg('b'))
{'a': 1, 'count': 2,
'avg': 20150226046183.0,
'min': datetime.datetime(2015, 2, 26, 1, 8, 22, tzinfo=<UTC>),
'max': datetime.datetime(2015, 2, 26, 8, 15, 44, tzinfo=<UTC>)}
Look при значении, связанном с ключом avg
. Это поплавок. Зачем? Среднее значение DateTimeFields должно быть DateTimeField, не так ли? Так почему же это поплавок? Я даже мог понять строку, но определенно не поплавок. Это не десятичные числовые данные.
Как только мы преодолеем эту проблему, я смогу проанализировать данные из поплавка, чтобы выяснить, что означает Django. Я вижу, что 20150225
, очевидно, означает 26 февраля 2015 года. Но подождите, это означает, что время суток будет представлено 046183.0
. Что это значит? 4:61 утра и 83 секунды ?? Это не имеет никакого смысла.
Может кто-нибудь, пожалуйста, объясните мне все это? Кажется, что это беспорядок.
В среднем, 2 марта 2014 года, 3 сентября 1886 года и 12 декабря 1949 года? –
@LegoStormtroopr Я думал так: каждое datetime может быть представлено как точка на полуоткрытом сегменте линии с определенной конечной точкой (поэтому его можно представить как числовое значение, например, как время, прошедшее с конечной точки, поэтому среднее арифметическое вычислимая). – krneki