如何根据本地时间和时区在 Admin 中格式化 DateTimeField?
我的设置.py:
TIME_ZONE = 'Europe/Bratislava'
LANGUAGE_CODE = 'en-us'
USE_I18N = True
USE_L10N = True
USE_TZ = True
pytz 包已安装。
模型:
class Material(models.Model):
category = models.ForeignKey(Category, null=True, blank=True)
code = models.CharField(max_length=10)
description = models.CharField(max_length=30, blank=True, null=True)
modified = models.DateTimeField(auto_now=True)
created = models.DateTimeField(auto_now_add=True)
还在设置中尝试了一些日期格式,这些都没有改变日期时间对象在管理列表显示中转换为字符串的方式:
DATETIME_FORMAT = 'd N Y'
DATE_FORMAT = 'd N Y'
在数据库中正确存储日期时间,“2012-11-20 08:57:15.901341+01”。但是在管理员中显示时,它始终是 UTC。
我可以在 ModelAdmin 中准备方法来处理格式,但这并不真正干燥,因为我希望我的管理类看起来像:
from django.utils.timezone import localtime
class MaterialAdmin(admin.ModelAdmin):
list_display = ('code', 'modified_local', 'created')
def modified_local(self, row):
return localtime(row.modified)
modified_local.admin_order_field = 'modified'
modified_local.short_description = 'Modified'