En el sitio de administración de Django, ¿cómo cambio el formato de visualización de los campos de tiempo?

Recientemente agregué un nuevo modelo a mi sitio, y estoy usando un archivo admin.py para especificar exactamente cómo quiero que aparezca en el sitio de administración. Funciona muy bien, pero no puedo averiguar cómo obtener uno de mis campos de fecha para incluir segundos en su formato de visualización. Solo veo valores como “27 de agosto de 2011, 12:12 pm” cuando lo que quiero ver es “27 de agosto de 2011, 12: 12 * : 37 * pm”

Prueba esto en el 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', ) 

Reemplazando “campo de tiempo” con el campo apropiado en su modelo, por supuesto, y agregando cualquier otro campo necesario en “list_display”.

cavando alrededor terminé aquí, pero apliqué un enfoque diferente a mi aplicación.

El cambio de los formatos predeterminados del administrador de django se podría hacer cambiando los formatos de la configuración regional de django para cada tipo que desee.

Ponga lo siguiente en su archivo admin.py (o settings.py) para cambiar el formato predeterminado de datetime en su administrador de django.

 from django.conf.locale.es import formats as es_formats es_formats.DATETIME_FORMAT = "d MYH:i:s" 

Cambiará los formatos de fecha y hora de ModelAdmin en ese archivo (o todo el sitio si está en la configuración).

No rompe los filtros de fecha y hora de administración y las características de orden como @Alan Illing ha señalado en los comentarios.

Espero que esta ayuda en el futuro.


Información extra:

Puedes cambiarlo para cada locale disponible en django, que son muchos.

Puede cambiar los siguientes formatos utilizando este enfoque

 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 

Si has probado la respuesta de gabriel pero no funciona, intenta establecer USE_L10N = False en settings.py , funciona para mí.

Tenga en cuenta que si USE_L10N se establece en Verdadero, entonces el formato dictado por el local tiene una mayor prioridad y se aplicará en su lugar

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