2011-08-27 16 views
17

Recentemente ho aggiunto un nuovo modello al mio sito e sto utilizzando un file admin.py per specificare esattamente come voglio che appaia nel sito di amministrazione. Funziona alla grande, ma non riesco a capire come ottenere uno dei miei campi data per includere secondi nel suo formato di visualizzazione. Sto vedendo solo valori come "27 agosto 2011, 12:12 pm" quando quello che voglio vedere è "27 agosto 2011, 12: 12 * : 37 * p.m."Nel sito di amministrazione Django, come posso cambiare il formato di visualizzazione dei campi temporali?

risposta

13

Prova questa nel 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',) 

Sostituzione "timeField" con il campo appropriato nel modello, naturalmente, e l'aggiunta di tutti gli altri campi necessari a "list_display".

+10

fare le cose come questo rompe con l'amministratore automatica filtri. – donatello

+2

Immagino che intendessi [strftime] (http://docs.python.org/3.3/library/time.html#time.strftime) – Martin

+1

Esiste un modo per formattare il timestamp ma mantenere la funzionalità di ordinamento nell'amministratore? –

17

scavando intorno ho finito qui ma applicato un approccio diverso alla mia app.

È possibile modificare i formati predefiniti di admin di django modificando i formati internazionali di django per ogni tipo desiderato.

Metti quanto segue sul tuo file admin.py (o settings.py) per cambiare il formato predefinito datetime sul tuo admin django.

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

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

Cambierà i formati datetime di ModelAdmin su quel file (o l'intero sito se nelle impostazioni).

Non si interrompe i filtri admin datetime e le funzionalità degli ordini come @Alan Illing ha sottolineato nei commenti.

speranza questo aiuto nel futuro


Info extra:

È possibile modificare per ogni locale disponibile in Django, che sono un sacco.

È possibile modificare i seguenti formati utilizzando questo approccio

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

Ricordati di cambiare il locale che usi effettivamente 'dai formati di importazione di django.conf.locale.en come en_formats' e poi di' en_formats.DATETIME_FORMAT = "dmY H: i: s" ' –

+0

Just abriviating antkowcz answer: Per l'inglese:' da django.conf.locale.en formati di importazione come en_formats e poi en_formats.DATETIME_FORMAT = "dmY H: i: s" ' Per uso spagnolo:' da django.conf.locale.es formati di importazione come es_formats es_formats.DATETIME_FORMAT = "d MYH: i: s" ' e così via ...... –

Problemi correlati