最近、自分のサイトに新しいモデルを追加しました。admin.pyファイルを使用して、管理サイトでの表示方法を正確に指定しています。うまく機能しますが、日付フィールドの1つに秒を表示形式に含める方法がわかりません。見たいのが「2011年8月27日12:12* :37 * pm 」の場合、「2011年8月27日12:12pm」のような値しか表示されません。
3 に答える
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管理者の日時のデフォルト形式を変更します。
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
gabrielの答えを試してもうまくいかなかった場合は、設定USE_L10N = False
してみsettings.py
てください。うまくいきます。
USE_L10NがTrueに設定されている場合、ロケールで指定された形式の優先順位が高くなり、代わりに適用されることに注意してください。
参照:https ://docs.djangoproject.com/en/2.0/ref/settings/#std:setting-DATETIME_FORMAT