Подтвердить что ты не робот

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

Недавно я добавил новую модель на свой сайт, и я использую файл admin.py, чтобы точно указать, как я хочу, чтобы он появился на сайте администратора. Он отлично работает, но я не могу понять, как получить одно из полей даты, чтобы включить в него формат отображения. Я вижу только такие значения, как "27 августа 2011 года, 12:12 вечера". когда то, что я хочу видеть, - "27 августа 2011 года, 12: 12 *: 37 * м."

4b9b3361

Ответ 1

Попробуйте это в 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', )

Замена "поля времени" на соответствующее поле в вашей модели, конечно, и добавление любых других необходимых полей в "list_display".

Ответ 2

копаясь, я закончил здесь, но применил другой подход к моему приложению.

Изменение форматов 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"

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

Он не разбивает фильтры и параметры доступа для datetime admin, поскольку @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

Ответ 3

Если вы попытались ответить на вопрос Габриэля, но он не сработал, попробуйте установить USE_L10N = False в settings.py, он работает для меня.

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

Видеть: https://docs.djangoproject.com/en/2.0/ref/settings/#std:setting-DATETIME_FORMAT