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

如何在Django Admin中编辑created_at与updated_at字段?

问题解答

为什么created_at/updated_at不能编辑、处于只读状态?

你在模型里定义这两个字段时,应该用了auto_now_add=True(给created_at)和auto_now=True(给updated_at)参数——Django的这两个参数会自动把字段的editable属性设为False,本质是为了让系统自动维护时间戳,避免人为手动修改导致数据逻辑混乱(比如随便改创建时间会破坏数据的时序性)。所以Admin后台会把这类字段设为只读,不允许在表单里直接编辑。

前端显示NAN的解决办法

  1. 确保模型字段配置正确
    检查你的模型字段定义,标准写法应该是这样的:

    class Project(models.Model):
        # 其他业务字段...
        created_at = models.DateTimeField(auto_now_add=True)
        updated_at = models.DateTimeField(auto_now=True)
    

    用auto_now_add=True的字段,在创建对象时Django会自动填充当前时间;auto_now=True的字段会在每次保存对象时自动更新为当前时间,这样后端返回的字段就不会是空值,前端也就不会显示NAN了。

  2. 补全已有数据的空值
    如果是之前创建的旧数据没有这两个字段的值,你可以通过Django的shell或者编写数据迁移脚本,批量给这些空字段赋值(比如统一设为数据创建的大致时间,或者当前时间)。

  3. 前端兜底处理
    暂时的应急方案可以在前端判断,如果日期字段为null/undefined,就显示“暂无数据”或者默认显示当前日期,但核心还是要从后端保证字段有合法值。

Admin创建对象的意义完全没问题

Admin后台的核心价值是快速高效地管理业务数据:你可以在这里创建、修改、删除业务相关的其他字段,还能做数据筛选、搜索、批量操作,不用自己从零开发一套后台管理界面。虽然自动维护的时间字段不能编辑,但这是合理的设计——这类系统维护的字段本就不该由人工干预,Admin的作用从来不是让你修改所有字段,而是聚焦在业务数据的管理上。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 07:52:35