2011-08-27 26 views
17

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 encontrar la forma de que uno de mis campos de fecha incluya segundos en su formato de visualización. Solo estoy viendo valores como "27 de agosto de 2011, 12:12 p.m." cuando lo que quiero ver es "27 de agosto de 2011, 12: 12 * : 37 * p.m."En el sitio de administración de Django, ¿cómo cambio el formato de visualización de los campos de hora?

Respuesta

13

probar este 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',) 

Sustitución "timefield" con el campo apropiado en su modelo, por supuesto, y la adición de otros campos necesarios en "list_display".

+10

hacer las cosas como esto rompe con el administrador automática filtros. – donatello

+2

Supongo que se refería a [strftime] (http://docs.python.org/3.3/library/time.html#time.strftime) – Martin

+1

¿Hay alguna manera de formatear la marca de tiempo pero retener conservar la funcionalidad de clasificación en el administrador? –

17

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

Cambiando los formatos predeterminados del administrador de django se puede hacer cambiando los formatos locales de django para cada tipo que desee.

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

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

es_formats.DATETIME_FORMAT = "d M Y H: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 administración de fecha y las funciones de orden como @Alan Illing ha señalado en los comentarios.

esperanza esta ayuda en el futuro


Información adicional:

Usted puede cambiarlo para cada configuración regional 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 
+2

Recuerde cambiar el local que realmente usa como 'from django.conf.locale.en import formats como en_formats' y luego' en_formats.DATETIME_FORMAT = "dmY H: i: s" ' –

+0

Just abriviating antkowcz answer: Para uso en inglés:' from django.conf.locale.en formatos de importación como en_formats y luego en_formats.DATETIME_FORMAT = "dmY H: i: s" ' Para uso español:' de django.conf.locale.es formatos de importación como es_formats es_formats.DATETIME_FORMAT = "d MYH: i: s" ' y así sucesivamente ...... –

Cuestiones relacionadas