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

Django Admin中`creation_date`字段已配置`list_display`但仍不显示的问题求助

Django Admin中creation_date字段已配置list_display但仍不显示的问题求助

我看了你的问题描述,马上发现了一个新手常踩的小坑——这大概率就是creation_date字段不显示的原因!

问题出在这一行代码

你在admin.py里写的list_display有个细节错误:

list_display = ('creation_date')  # 这里少了一个关键的逗号!

Django要求list_display必须是元组或列表。当你只传一个元素却不加逗号时,Python会把('creation_date')解析成普通字符串,而不是元组。这时候Django会“认死理”地迭代这个字符串的每个字符,把每个字母当成字段名来找——显然不存在这些“字段”,所以最终列表里啥也不会显示(当然你的creation_date也不会出现)。

修复方法超简单

只需要给list_display的元素后面加个逗号,确保它是元组:

from django.contrib import admin
from .models import VendorProduct

class VendorProductAdmin(admin.ModelAdmin):
    list_display = ('creation_date',)  # 注意这里的逗号!
    readonly_fields = ('creation_date',) 

admin.site.register(VendorProduct, VendorProductAdmin)

修改完保存,重启一下Django服务器,再刷新后台看看,creation_date应该就乖乖显示在列表里了。

额外的小建议

  1. 你的VendorProduct模型里,auto_now_add=True已经会自动设置创建时间,完全不需要再加blank=True, null=True——加了反而让字段允许为空,不符合“记录创建时间”的逻辑,建议改成:
    creation_date = models.DateTimeField(auto_now_add=True)
    
    如果你担心已有数据的迁移问题,这个调整也可以后续再改,不影响当前的显示问题。
  2. 模型里的__str__方法返回self.title,但你粘贴的模型代码里没看到title字段?如果是粘贴时漏了就没事,否则运行会报错,记得检查一下哦。

按照这个方法改完,应该就能完全满足你的需求:字段显示在后台列表里,而且是只读状态不能手动编辑。

备注:内容来源于stack exchange,提问作者Google User

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 11:08:03