2017-10-19 82 views
0

unsing Func键()时,我有一个模型答:TzInfo错误在DateTimeField字段

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

而且我想算的“天”“行”组的数量。

因此,这里是我的查询:

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' object has no attribute 'tzinfo'

我明白为什么但我不如何解决这个

在我的设置:

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

请指教。谢谢。

回答

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') 

它按预期工作。