現地時間とタイムゾーンに従ってAdminでDateTimeFieldをフォーマットする方法は?
私のsettings.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-2008:57:15.901341+01」。ただし、adminで表示される場合は、常にUTCで表示されます。
ModelAdminでフォーマットを処理するメソッドを準備できますが、管理者クラスが次のようになりたいので、実際にはDRYではありません。
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'