最近、新しいモデルをサイトに追加しました。admin.pyファイルを使用して、管理サイトでのモデルの表示方法を正確に指定しています。これはうまく機能しますが、日付フィールドの1つに表示形式に秒を含める方法を理解できません。 「2011年8月27日午後12時12分」のような値しか表示されません。見たいのは「2011年8月27日12時12分* :37 * p.m.」
ModelAdminでこれを試してください。
def time_seconds(self, obj):
return obj.timefield.strftime("%d %b %Y %H:%M:%S")
time_seconds.admin_order_field = 'timefield'
time_seconds.short_description = 'Precise Time'
list_display = ('id', 'time_seconds', )
もちろん、「timefield」をモデルの適切なフィールドに置き換え、「list_display」に他の必要なフィールドを追加します。
私はここで掘り下げましたが、アプリに別のアプローチを適用しました。
Django adminのデフォルト形式を変更するには、必要なすべてのタイプのDjangoロケール形式を変更します。
次のコードをadmin.pyファイル(またはsettings.py)に追加して、Django admin。
from Django.conf.locale.es import formats as es_formats
es_formats.DATETIME_FORMAT = "d M Y H:i:s"
これにより、そのファイル(または設定内の場合はサイト全体)のModelAdminの日時形式が変更されます。
@Alan Illingがコメントで指摘しているように、管理日時フィルターと注文機能を壊しません。
今後このヘルプが必要です
追加情報:
Djangoで利用可能なすべてのロケールで変更できます。
このアプローチを使用して、次の形式を変更できます
from Django.conf.locale.es import formats as es_formats
es_formats.DATETIME_FORMAT
es_formats.NUMBER_GROUPING
es_formats.DATETIME_INPUT_FORMATS
es_formats.SHORT_DATETIME_FORMAT
es_formats.DATE_FORMAT
es_formats.SHORT_DATE_FORMAT
es_formats.DATE_INPUT_FORMATS
es_formats.THOUSAND_SEPARATOR
es_formats.DECIMAL_SEPARATOR
es_formats.TIME_FORMAT
es_formats.FIRST_DAY_OF_WEEK
es_formats.YEAR_MONTH_FORMAT
es_formats.MONTH_DAY_FORMAT
ガブリエルの答えを試してもうまくいかなかった場合は、USE_L10N = False
in settings.py
、 わたしにはできる。
USE_L10NがTrueに設定されている場合、ロケール指定の形式が優先され、代わりに適用されます。
参照: https://docs.djangoproject.com/en/2.0/ref/settings/#std:setting-DATETIME_FORMAT