46

最近、自分のサイトに新しいモデルを追加しました。admin.pyファイルを使用して、管理サイトでの表示方法を正確に指定しています。うまく機能しますが、日付フィールドの1つに秒を表示形式に含める方法がわかりません。見たいのが「2011年8月27日12:12* :37 * pm 」の場合、「2011年8月27日12:12pm」のような値しか表示されません。

4

3 に答える 3

53

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」に他の必要なフィールドを追加します。

于 2011-08-27T19:26:59.947 に答える
47

掘り下げてここで終了しましたが、アプリに別のアプローチを適用しました。

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
于 2015-09-02T14:17:08.233 に答える
10

gabrielの答えを試してもうまくいかなかった場合は、設定USE_L10N = Falseしてみsettings.pyてください。うまくいきます。

USE_L10NがTrueに設定されている場合、ロケールで指定された形式の優先順位が高くなり、代わりに適用されることに注意してください。

参照:https ://docs.djangoproject.com/en/2.0/ref/settings/#std:setting-DATETIME_FORMAT

于 2018-01-24T09:12:33.427 に答える