Как изменить формат отображения полей времени на сайте администратора Django?

недавно я добавил новую модель на свой сайт, и я использую admin.py файл, чтобы точно указать, как я хочу, чтобы он появился на сайте администратора. Он отлично работает, но я не могу понять, как заставить одно из моих полей даты включать секунды в формат отображения. Я вижу только такие ценности, как "Август. 27, 2011, 12: 12 "when what what I want to be seeing is" Aug. 27, 2011, 12:12*:37* м."

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) чтобы изменить формат datetime по умолчанию в вашем администраторе django.

from django.conf.locale.es import formats as es_formats

es_formats.DATETIME_FORMAT = "d M Y H:i:s"

он изменит форматы datetime ModelAdmin в этом файле (или на всем сайте, если в настройках).

он не ломается admin datetime фильтры и функции заказа, как @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 на settings.py, это работает для меня.

обратите внимание, что если USE_L10N имеет значение True, то формат, продиктованный языковым стандартом, имеет более высокий приоритет и будет применяться вместо

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