2009-07-24 12 views
34

That:Come formattare dateTime nel template django?

{{ wpis.entry.lastChangeDate|date:"D d M Y" }} 

mi dà (perché?):

2009-07-24 21:45:38.986156 

e io non so come saltare parte frazionaria ...

Nel mio modello ho:

addedDate = models.DateTimeField(default=datetime.now) 
+0

Certo che c'è, qui è tutta la linea

  • {{wpis.entry.UserID.username}} @ [{{wpis.entry.lastChangeDate | Data: "D d MY"}}]
  • IProblemFactory

    +3

    Strano, funziona per me. Sei sicuro che il tuo lastChangeDate sia Django DateTime? – freiksenet

    +1

    È per data aggiunta non per lastChangeDate, ecco perché mi sto chiedendo. – freiksenet

    risposta

    6

    È possibile utilizzare questo:

    addedDate = datetime.now().replace(microsecond=0)

    3

    Ho il sospetto che wpis.entry.lastChangeDate sia stato in qualche modo trasformato in una stringa nella vista, sia prima di arrivare al modello.

    Al fine di verificare questa ipotesi, si può solo cercare nella vista se ha qualche proprietà/metodo che solo le stringhe hanno - come ad esempio wpis.entry.lastChangeDate.upper, e poi vedere se si blocca il modello.

    È inoltre possibile creare il proprio custom filter e utilizzarlo per scopi di debug, controllando l'oggetto e scrivendo i risultati dell'ispezione sulla pagina o semplicemente sulla console. Sarebbe in grado di ispezionare l'oggetto e verificare se è davvero un DateTimeField.

    Su un avviso non correlato, perché non utilizzare models.DateTimeField(auto_now_add=True) per impostare il datetime sulla creazione?

    94

    Questo è esattamente ciò che si desidera. Prova questo:

    {{ wpis.entry.lastChangeDate|date:'Y-m-d H:i' }} 
    
    +22

    I dettagli su tutte le opzioni di formattazione disponibili sono Django docs: https://docs.djangoproject.com/en/dev/ref/templates/builtins/#date –

    +0

    Nota: nessuno spazio dopo ':' e utilizzare virgolette semplici ... – FaithReaper

    Problemi correlati