[python] Come confrontare le date in Django



2 Answers

Ho aggiunto date_now alla mia lista di processori di contesto.

Quindi nel modello c'è una variabile chiamata "date_now" che è solo datetime.datetime.now ()

Crea un processore di contesto chiamato date_now nel file context_processors.py

import datetime

def date_now(request):
    return {'date_now':datetime.datetime.now()}

E in settings.py, modifica CONTEXT_PROCESSORS per includerlo, nel mio caso lo è

app_name.context_processors.date_now
Question

Vorrei confrontare una data con la data corrente in Django, preferibilmente nel modello, ma è anche possibile farlo prima di renderizzare il modello. Se la data è già passata, voglio dire "Nel passato" mentre se è in futuro, voglio dare la data.

Speravo che si potesse fare qualcosa del genere:

{% if listing.date <= now %} 
     In the past 
{% else %} 
     {{ listing.date|date:"d M Y" }} 
{% endif %}

Con ora è la data di oggi, ma questo non funziona. Non ho trovato nulla a riguardo nei documenti di Django. Qualcuno può dare qualche consiglio?




Ho trovato questa domanda e ho avuto un problema simile. Stavo cercando di visualizzare le informazioni se si fosse verificato solo in passato.

Usando il tag "timesince" di Django nel template sono stato in grado di risolvere il mio problema. Non sto dicendo che sia efficiente, ma funziona per me.

Nel modello:

{% if model_name.date_time|timesince >= "1 min" %}
   <p>In the past</p>
{% else %}
   <p>{{ model_name.date_time }}</p>
{% endif %}



Oltre alla risposta vantaggiosa di @ bx2, se il campo è un campo data / ora, basta chiamare la funzione date () ai modelli datetimefield:

from datetime import date

@property
def is_past_due(self):
    if date.today() > self.date.date():
        return True
    return False





Related