【发布时间】:2015-02-26 09:29:01
【问题描述】:
这是我的 Django 模型:
class MyModel(models.Model):
a = IntegerField()
b = DateTimeField()
这是我在此模型上执行的查询集,用于查找 bs 的每个 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>)}
查看与avg 键关联的值。它是一个浮子。为什么? DateTimeFields 的平均值应该是 DateTimeField 吧?那么为什么它是所有事物的浮动呢?我什至可以理解一个字符串——但绝对不是一个浮点数。这不是十进制数值数据。
一旦我们解决了这个问题,我就可以从浮点数中解析出数据来弄清楚 Django 的含义。我可以看到20150225 显然表示 2015 年 2 月 26 日。但是等等,这意味着一天中的时间将由 046183.0 表示。这到底是什么意思?凌晨 4 点 61 分和 83 秒?没有意义。
有人可以向我解释这一切吗?好像有点乱。
【问题讨论】:
-
2014 年 3 月 2 日、1886 年 9 月 3 日和 1949 年 12 月 12 日的平均值是多少?
-
@LegoStormtroopr 我是这样想的:每个日期时间都可以表示为具有定义端点的半开线段上的一个点(因此它可以表示为一个数值,例如从端点,所以算术平均值是可计算的)。
标签: python django django-models django-database