2009-07-24 43 views
34

Que:¿Cómo formatear dateTime en la plantilla django?

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

me da (¿por qué?):

2009-07-24 21:45:38.986156 

y no sé cómo omitir parte de fracción ...

En mi modelo que tengo:

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

Por supuesto que existe, aquí está toda la línea

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

    +3

    Extraño, funciona para mí. ¿Estás seguro de que tu lastChangeDate es Django DateTime? – freiksenet

    +1

    Es para fecha de agregado no para lastChangeDate, es por eso que me pregunto. – freiksenet

    Respuesta

    6

    Puede utilizar este:

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

    3

    Sospecho que wpis.entry.lastChangeDate se ha transformado de alguna manera en una cadena en la vista, sea antes de llegar a la plantilla.

    Para verificar esta hipótesis, puede verificar la vista si tiene alguna propiedad/método que solo las cadenas tienen, como por ejemplo wpis.entry.lastChangeDate.upper, y luego ver si la plantilla falla.

    También puede crear su propio custom filter, y usarlo para la depuración, permitiéndole inspeccionar el objeto, y escribir los resultados de la inspección en la página, o simplemente en la consola. Podría inspeccionar el objeto y comprobar si realmente es un DateTimeField.

    En un aviso no relacionado, ¿por qué no usa models.DateTimeField(auto_now_add=True) para establecer la fecha y hora en la creación?

    94

    Esto es exactamente lo que quiere. Prueba esto:

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

    Los detalles sobre todas las opciones de formato disponibles son documentos de Django: https://docs.djangoproject.com/en/dev/ref/templates/builtins/#date –

    +0

    Nota: sin espacio después de ':' y use comillas simples ... – FaithReaper

    Cuestiones relacionadas