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

如何在Django Admin面板中显示月份全称?

Django Admin 显示月份全称的解决方案

你需要在Django Admin面板中以04 December 2023的格式显示日期(包含月份全称),当前仅显示月份缩写或数字,问题出在代码中的字段名错误,以下是修复方案:

问题定位

你的admin.py中自定义的due_date方法里,引用了obj.date,但你的Todo模型中实际的日期字段是due_date,这个错误导致Django无法正确渲染自定义格式, fallback到了默认的日期显示样式。

修复步骤

1. 修正字段引用错误

修改admin.py中的自定义方法,将obj.date改为obj.due_date,同时建议重命名方法避免和模型字段名冲突,避免混淆:

@admin.register(Todo)
class TodoAdmin(admin.ModelAdmin):
    list_display = ("id", "title", "formatted_due_date",)
    list_display_links = ("title",)

    def formatted_due_date(self, obj):
        # 使用strftime格式化日期,%B对应月份全称
        return obj.due_date.strftime("%d %B %Y")
    # 设置表头显示的名称,和原字段名保持一致
    formatted_due_date.short_description = "Due Date"

2. (可选)使用Django原生日期格式化工具

如果你希望日期格式支持国际化适配,推荐使用Django的DateFormat模块,替代Python原生的strftime:

from django.utils.dateformat import DateFormat

@admin.register(Todo)
class TodoAdmin(admin.ModelAdmin):
    list_display = ("id", "title", "formatted_due_date",)
    list_display_links = ("title",)

    def formatted_due_date(self, obj):
        df = DateFormat(obj.due_date)
        # d代表两位日期,F代表月份全称,Y代表四位年份
        return df.format("d F Y")
    formatted_due_date.short_description = "Due Date"

验证配置

你的settings.py已经正确开启了国际化支持:

  • USE_I18N = True
  • LANGUAGE_CODE = 'en-gb'
    这确保了月份全称会按照英式英语显示(如December、April),无需额外调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 03:12:55