2016-07-24 20 views
1

Ich habe folgendes Modell in Django definiert:Eigenschaft nicht und kein Fehler mit Datumzeit Rückkehr

class MasterBudget(models.Model): 
    name = models.CharField(max_length=140) 
    expiry_date = models.DateField() 

    @property 
    def days_to_expiry(self): 
     todays_date = datetime.datetime.now() 
     datetime.timedelta(7) 
     days_until = (self.expiry_date - todays_date).days 
     return days_until 

das Objekt Mit Tagen bis zum Ablauf der Rückkehr.

Meiner Ansicht nach, bekomme ich keinen Wert kommt durch, wenn ich Referenz:

{{budget.days_to_expiry}} 

und kein Fehler auf der Konsole, dass etwas schief gegangen ist.

weiß, dass ich meine Benennung richtig ist, als ob ich folgendes tun:

@property 
def days_to_expiry(self): 
    return 1 
    todays_date = datetime.datetime.now() 
    datetime.timedelta(7) 
    days_until = (self.expiry_date - todays_date).days 

ich die ‚1‘ in der Ansicht zu sehen.

Irgendeine Idee, was das verursacht?

+0

Beachten Sie, dass der Aufruf von 'datetime.timedelta (7)' in beiden Snippets * absolut keine Wirkung hat *. –

+0

Danke für das Heads-Up. Ich dachte, dass es erlaubt wäre, die beiden als ganze Zahlen zu vergleichen (Tage ohne Zeit). Entfernt es aber immer noch kein Glück :( – NickP

Antwort

1

Da Sie nur verwenden eine DateField():

Ein Datum, vertreten in Python durch eine datetime.date Instanz

Vielleicht versuchen so etwas wie dies zu tun:

class MasterBudget(models.Model): 
    name = models.CharField(max_length=140) 
    expiry_date = models.DateField() 

    @property 
    def days_to_expiry(self): 
     todays_date = datetime.date.today() 
     return (self.expiry_date - todays_date).days 

Es gibt die Anzahl der Tage zwischen expiry_date und heute zurück.

Haben Sie sich das erhofft?

+0

Genau das, was ich versuchte zu erreichen! Danke, funktioniert wie ein Charme – NickP

+0

@NickP Froh, es hat Ihnen geholfen! Viel Glück! – jape