如何在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的解决办法
确保模型字段配置正确
检查你的模型字段定义,标准写法应该是这样的: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了。补全已有数据的空值
如果是之前创建的旧数据没有这两个字段的值,你可以通过Django的shell或者编写数据迁移脚本,批量给这些空字段赋值(比如统一设为数据创建的大致时间,或者当前时间)。前端兜底处理
暂时的应急方案可以在前端判断,如果日期字段为null/undefined,就显示“暂无数据”或者默认显示当前日期,但核心还是要从后端保证字段有合法值。
Admin创建对象的意义完全没问题
Admin后台的核心价值是快速高效地管理业务数据:你可以在这里创建、修改、删除业务相关的其他字段,还能做数据筛选、搜索、批量操作,不用自己从零开发一套后台管理界面。虽然自动维护的时间字段不能编辑,但这是合理的设计——这类系统维护的字段本就不该由人工干预,Admin的作用从来不是让你修改所有字段,而是聚焦在业务数据的管理上。
内容的提问来源于stack exchange,提问作者crawlingdev

