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

问题描述 投票:0回答:2

我的模型中有一个 DateTimeField。

当我将此字段添加到 admin.py 时,格式显示为 4:00 pm ,如何将其更改为 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-models time django-admin django-timezone
2个回答
0
投票

您可以通过创建自定义管理模型并覆盖

date_hierarchy
属性来更改 Django 管理中的时间格式。具体方法如下:

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)

在此代码中,

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

至于排序问题,Django admin 应该自动按降序对

DateTimeField
进行排序。如果排序不正确,您可能需要检查管理模型中是否应用了任何自定义排序。

如果您想按

creation_date
字段排序,可以将其添加到管理模型中的
ordering
属性中:

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

这将在 Django 管理界面中按

creation_date
降序对模型实例进行排序。


0
投票

您可以使用

DATETIME_FORMAT
设置覆盖格式:https://docs.djangoproject.com/en/4.2/ref/settings/#datetime-format

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

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

© www.soinside.com 2019 - 2024. All rights reserved.