Me gustaría comparar una fecha con la fecha actual en Django, preferiblemente en la plantilla, pero también es posible hacerlo antes de representar la plantilla. Si la fecha ya ha pasado, quiero decir "En el pasado", mientras que si es en el futuro, quiero dar la fecha.Cómo comparar fechas en Django
Tenía la esperanza de que se podría hacer algo como esto:
{% if listing.date <= now %}
In the past
{% else %}
{{ listing.date|date:"d M Y" }}
{% endif %}
siendo ahora la fecha de hoy, pero esto no funciona. No pude encontrar nada sobre esto en los documentos de Django. ¿Alguien puede dar un consejo?
Sí, estoy de acuerdo en que las plantillas no son el lugar para la comparación de fechas, pero en esta situación parecía mucho más elegante. En cualquier caso, finalmente implementé un método en my django Model, inPast(), que compara la fecha con la fecha actual y devuelve True si está en el pasado y de lo contrario es falso. Esto luego se llama desde la plantilla. Tu solución funciona igual de bien o mejor, solo tenía curiosidad por saber si había una forma de hacerlo en la plantilla. –
No lo creo :(También desde el estilo de codificación y la refactorización de POV, es mucho mejor poder reproducir 'is_past_due' como una propiedad más avanzada, es decir, en otras plantillas; de lo contrario, tendrías que copiar y pegar el mismo código de plantilla una y otra vez. – bx2
Si de verdad quieres guardar las fechas en la plantilla, debes pasar la fecha actual como extra_context y luego usar la etiqueta estándar 'if', pero esta no es una solución elegante. – bx2