从两个日期列Django ORM中减去日期以进行过滤

时间:2019-06-26 14:24:35

标签: django python-3.x mongodb django-orm

我在MongoDB中有两个键/列。我正在使用Django ORM,使用称为djongo的连接器从mongo中获取数据。 我需要套用过滤器。我必须与列日期有所不同,并检查差异是否少于24小时。

这是我的查询-

time_threshold = datetime.datetime.now() - timedelta(days=1)

total_count = ArticleFeed.objects.annotate(
    diff=ExpressionWrapper(F('crawled') - F('published'), output_field=DurationField())
).filter(diff__lte=time_threshold,
         crawled__lte=report_start_ISO, crawled__gte=last_ISO, data_source="TOI").exclude(
    reject='repeat').count()

但是我收到以下异常-

  

文件   “ /home/embed/inmobi/content_curation_project/ccp_env/lib/python3.7/site-packages/django/db/backends/base/operations.py”,   第621行,在subtract_temporals中       引发NotSupportedError(“此后端不支持%s减法。”%internal_type)django.db.utils.NotSupportedError:此   后端不支持DateTimeField减法。

请帮助。 谢谢

1 个答案:

答案 0 :(得分:0)

,因为该错误表明您正在尝试执行不受支持的操作。我不熟悉Django,但建议您将字段强制转换为日期,然后执行操作。 E.G date(F('crawled'))-date(F('published'))