Django 如何将查询集与当前和;使用ExpressionWrapper的日期字段

Django 如何将查询集与当前和;使用ExpressionWrapper的日期字段,django,django-queryset,annotate,datefield,Django,Django Queryset,Annotate,Datefield,我正试图基于DateField对queryset进行注释,如图所示 我使用的是Django版本1.8.12和MYSQL版本5.6.40 试过跟踪,但这里是DateTimeField。下面的评论说“将其更改为Value(now.date(),DateField())-F('creation\u date\u date')不起作用” 型号代码如下所示: class Holding(models.Model): trans_date=models.DateField(_(“trans.date”),n

我正试图基于DateField对queryset进行注释,如图所示

我使用的是Django版本1.8.12和MYSQL版本5.6.40

试过跟踪,但这里是DateTimeField。下面的评论说“将其更改为Value(now.date(),DateField())-F('creation\u date\u date')不起作用”

型号代码如下所示:

class Holding(models.Model):
trans_date=models.DateField(_(“trans.date”),null=False)
...
给出错误持续时间的注释查询如下所示:

today=timezone.now().date()
testqs=Holding.objects.filter(id=1)
myqs=testqs.annotate(duration=ExpressionWrapper(值(今天,DateField())-F('trans_date'),output_field=DurationField())
当我试着打印的时候,我得到的只是一张纸。差异打印以供参考

MYQ中的i的
:
打印i.duration,'-',today-i.trans_日期
无-1224天,0:00:00
无-1206天,0:00:00
无-1144天,0:00:00
无-1051天,0:00:00
无-1045天,0:00:00

我希望持续时间是一个timedelta值,与今天和trans_date之间存在差异,而不是无差异。

我无法复制您的问题。您的查询应该有效。我在我的一个模型上尝试了完全相同的查询,带有
日期字段
,当我打印
持续时间
注释时,它返回“9661天,0:00:00”。你能告诉我你的Django和MySql版本吗。我已经在不同的模型上尝试过,如下所示,但仍然没有得到正确的持续时间值。Django 1.11、postgreSQL 9.6我知道您有不同的版本,但Django 1.8已经支持
ExpressionWrapper
,不确定为什么它不适合您。但是,是的,这可能是您的特定设置的问题。此外,我不能提出替代查询,我能想到的所有替代方案都只在Django 1.11或2.2中受支持。但不清楚这是MySQL还是Django的问题。