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

Django如何获取最近10分钟内修改的所有Status模型记录?

问题修复方案

核心问题分析

  • 时区不匹配:因为项目开启了USE_TZ = True且时区设为UTC,直接用datetime.now()生成的是本地时间,和数据库中存储的UTC时间无法正确比对,导致时间范围计算错误。
  • 查询逻辑颠倒:当前用modificationtime__lte=ten_minutes_ago是筛选早于10分钟前的记录,和“最近10分钟内修改”的需求完全相反。

修改后的正确代码

from django.utils import timezone
from datetime import timedelta
from django.db.models import Q

# 生成UTC时区的10分钟前时间点
ten_minutes_ago = timezone.now() - timedelta(minutes=10)
# 筛选修改时间晚于等于10分钟前的记录
changedstatuslist = Status.objects.filter(Q(modificationtime__gte=ten_minutes_ago))

额外优化建议

  • 若modificationtime允许为空,可加上非空判断避免无效数据:
    changedstatuslist = Status.objects.filter(
        Q(modificationtime__gte=ten_minutes_ago) & 
        Q(modificationtime__isnull=False)
    )
    
  • 建议给modificationtime设置auto_now=True,让Django自动维护修改时间,无需手动更新:
    modificationtime = models.DateTimeField(verbose_name="modificationtime", auto_now=True)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 06:20:27