【问题标题】:Date subtraction from two date column Django ORM for filter从两个日期列 Django ORM 中减去日期以进行过滤
【发布时间】:2025-11-29 15:00:01
【问题描述】:

我在 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 中 raise NotSupportedError("这个后端不支持 %s 减法。" % internal_type) django.db.utils.NotSupportedError: This 后端不支持 DateTimeField 减法。

请帮忙。 谢谢

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】: