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

Django中timezone.now()返回服务器启动时间的解决方法

解决Django模型初始日期不动态更新的问题
  • 问题根源:你如果写成 date_field = models.DateTimeField(default=timezone.now()),timezone.now() 会在服务器启动加载模型时就执行一次,结果被固定成启动时的时间,后续创建对象不会重新计算。

  • 正确写法1:直接传入函数对象(不带括号)

    from django.db import models
    from django.utils import timezone
    
    class YourModel(models.Model):
        created_at = models.DateTimeField(default=timezone.now)
    

    这样Django会在每次创建对象时调用timezone.now(),返回当前的时间。

  • 正确写法2:用auto_now_add参数(更适合记录创建时间)
    如果这个字段是用来记录对象的创建时间,推荐用Django内置的auto_now_add=True,它会自动在对象首次创建时设置当前时间,且默认是不可编辑的:

    class YourModel(models.Model):
        created_at = models.DateTimeField(auto_now_add=True)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 17:05:25