在DatetimeField上取消Func()时出现TzInfo错误

时间:2017-10-19 12:54:57

标签: django django-queryset

我有一个模特A:

class A(models.Model):
   start_datetime = models.DatetimeField()
   end_datetime = models.DatetimeField()
   status = models.CharField(max_length=3)

我试图计算" row"的数量。分组"日"。

所以这是我的问题:

queryset = A.objects.filter(status='OK')
queryset = queryset.annotate(day=Func(F('start_datetime'), function='DATE'))
queryset = queryset.values('day')
queryset = queryset.annotate(total=Count('id'))

当我尝试打印查询集时:print(queryset)

我收到此错误消息:

  

AttributeError:' datetime.date'对象没有属性' tzinfo'

我理解为什么,但我 如何解决此问题

在我的设置中:

LANGUAGE_CODE = 'en'
TIME_ZONE = 'America/Montreal'
USE_TZ = True
USE_I18N = True
USE_L10N = True

请指教。谢谢。

1 个答案:

答案 0 :(得分:0)

我找到了另一种解决方案:

queryset = A.objects.filter(status='OK')
queryset = queryset.annotate(day=Trunc('start_datetime', 'day', output_field=DateField()))
queryset = queryset.values('day')
queryset = queryset.annotate(total=Count('id'))
queryset = queryset.order_by('-day')

它按预期工作。