如何在 django 中更改 12 小时格式?

How do I change the 12 hour format in django?

提问人:Aidar 提问时间:11/3/2023 更新时间:11/3/2023 访问量:40

问:

我的模型中有一个 DateTimeField。

当我将此字段添加到 admin.py 时,格式显示为下午 4:00,如何将其更改为 16:00?

creation_date = models.DateTimeField(auto_now_add=True,)

如果我这样做

def time(self):
return self.creation_date.timezone().strftime('%Y-%m-%d %H:%M:%S')

该时间字段未排序

django 时间 django-admin django 时区

评论

0赞 willeM_ Van Onsem 11/3/2023
通常这不是 Django 的任务,而是用户的语言环境,模板的格式也相应地进行。

答:

0赞 Jean-Louis Mbaka 11/3/2023 #1

你可以通过创建自定义管理模型并覆盖属性来更改 Django admin 中的时间格式。这是你如何做到的:date_hierarchy

from django.contrib import admin
from .models import YourModel

@admin.register(YourModel)
class YourModelAdmin(admin.ModelAdmin):
    date_hierarchy = 'creation_date'
    date_hierarchy_drilldown = False

    def changelist_view(self, request, extra_context=None):
        self.date_hierarchy = request.GET.get('dh', 'creation_date')
        return super().changelist_view(request, extra_context=extra_context)

在此代码中,应替换为模型的名称。这会将 Django 管理界面中的日期格式更改为 24 小时格式。YourModel

至于排序问题,Django 管理员应该自动按降序排序。如果排序不正确,您可能需要检查管理模型中是否应用了任何自定义排序。DateTimeField

如果要按字段排序,可以将其添加到管理模型中的属性:creation_dateordering

class YourModelAdmin(admin.ModelAdmin):
    ordering = ('-creation_date',)

这将在 Django 管理界面中按降序对模型实例进行排序。creation_date

0赞 CoffeeBasedLifeform 11/3/2023 #2

您可以使用以下设置覆盖格式:https://docs.djangoproject.com/en/4.2/ref/settings/#datetime-formatDATETIME_FORMAT

默认值:“N j, Y, P”(例如,2003 年 2 月 4 日下午 4 点)

用于在任何位置显示日期时间字段的默认格式 系统的一部分。请注意,如果 USE_L10N 设置为 True,则 区域设置指定的格式具有更高的优先级,将应用 相反。请参阅允许的日期格式字符串。