es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Plantilla de Django – Calcular el número de meses entre hoy y una fecha variable

Tengo una variable que es una fecha y quiero calcular la diferencia de meses entre ella y la fecha actual. El primer intento fue calcular esto en la vista, pero prefiero hacer este cálculo en la interfaz de usuario cuando sea necesario. He intentado declarar y restar los valores en el código de muestra aquí, pero me encontré con errores de sintaxis, aunque en Python esto funciona bien.

Esto es lo que intenté en las plantillas:

{% with duration=(organisation.date_founded.year - today.year) * 12 + (date_started.month - today.month) %}
  {{ duration }}
{% endwith %}

Esta es la versión de Python:

today = datetime.datetime.today()
num_months = (date_started.year - today.year) * 12 + (date_started.month - today.month)
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para calcular la diferencia en meses entre una variable de fecha y la fecha actual en una plantilla de Django, puedes usar la misma fórmula que utilizaste en la versión Python de tu código. Sin embargo, hay un par de errores de sintaxis en el código que proporcionaste.

    Primero, la variable date_started no está definida en el código de la plantilla. Suponiendo que la hayas pasado al contexto desde la vista, deberías usar la sintaxis {{ date_started }} para acceder a su valor en la plantilla.

    En segundo lugar, tienes un espacio extra después de la llave de apertura del tag endwith. Esto debería corregirse a {% endwith %}.

    Aquí está el código corregido:

    {% with duration=(date_started.year - today.year) * 12 + (date_started.month - today.month) %}
      {{ duration }}
    {% endwith %}
    

    Este código asume que has pasado la variable today al contexto de la plantilla de la misma manera que pasaste date_started. Si no es así, puedes definirla directamente en la plantilla usando la misma sintaxis que en la versión Python:

    {% with today=datetime.datetime.today %}
      {% with duration=(date_started.year - today.year) * 12 + (date_started.month - today.month) %}
        {{ duration }}
      {% endwith %}
    {% endwith %}
    

    Esto calculará la diferencia en meses entre date_started y la fecha actual y mostrará el resultado en la plantilla. Sin embargo, ten en cuenta que este cálculo se realizará cada vez que se renderice la plantilla, lo que puede agregar una sobrecarga innecesaria a tu aplicación. Si necesitas realizar este cálculo con frecuencia, puede ser más eficiente calcularlo una vez en la vista y pasar el resultado a la plantilla.

Comments are closed.