You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Django ORM删除24小时前的所有Question模型记录?

Django ORM删除创建时间超过24小时的Question记录

要完成删除创建时间超过24小时的记录,你需要基于date_time字段构建过滤条件,核心是筛选出时间早于当前时间减去24小时的记录,具体实现如下:

推荐实现(考虑时区)

如果你的Django项目开启了时区支持(settings.py中USE_TZ = True),使用Django的timezone模块处理时间更准确:

from django.utils import timezone
import datetime

# 计算24小时前的时间阈值
threshold = timezone.now() - datetime.timedelta(hours=24)
# 执行删除操作
Question.objects.filter(date_time__lt=threshold).delete()

也可以将条件直接内联简化:

from django.utils import timezone
import datetime

Question.objects.filter(date_time__lt=timezone.now() - datetime.timedelta(hours=24)).delete()

不考虑时区的实现(仅适用于关闭时区的项目)

如果项目未启用时区(USE_TZ = False),可以直接使用原生datetime模块:

import datetime

threshold = datetime.datetime.now() - datetime.timedelta(hours=24)
Question.objects.filter(date_time__lt=threshold).delete()

关键说明

  • __lt是Django ORM的字段查询运算符,表示“小于(less than)”,用来匹配date_time早于阈值的记录。
  • 注意模型中date_time字段使用了auto_now=True,该设置会在每次保存对象时更新时间。如果你的需求是基于创建时间而非最后修改时间,建议将字段改为auto_now_add=True(仅在对象创建时设置一次时间)。

内容的提问来源于stack exchange,提问作者Amol_G

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 07:45:31