我的模型中有一个 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')
时间字段未排序
您可以通过创建自定义管理模型并覆盖
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
降序对模型实例进行排序。
您可以使用
DATETIME_FORMAT
设置覆盖格式:https://docs.djangoproject.com/en/4.2/ref/settings/#datetime-format
默认值:'N j, Y, P'(例如 2003 年 2 月 4 日下午 4 点)
用于在任何格式中显示日期时间字段的默认格式 系统的一部分。 请注意,如果 USE_L10N 设置为 True,则 区域设置指定的格式具有更高的优先级并且将被应用 反而。请参阅允许的日期格式字符串。