2016-04-02 14 views
0

Moment habe ich eine Promotion Tabelle mit einem Feld end_date definiert als:Django Ablaufen Logik für genau 7 Tage

end_date = models.DateField('date') 

Ich möchte eine Abfrage erstellen, wo ich für alle Aktionen filtern können, die 7 in genau abläuft Tage.

Wie gehe ich dabei vor? Ich habe schon versucht, diese ohne Glück:

from restaurant.models import Promotion 
from datetime import datetime, timedelta 

expiring_soon = Promption.objects.filter(end_date = datetime.now()+timedelta(days=7)) 
+2

Haben Sie versucht, filter (end_date = datetime.now(). Date + timedelta (days = 7)) '? –

+0

'.filter (end_date = datetime.now(). Date() + timedelta (days = 7)) 'funktioniert. –

+0

Ja, habe ich in meiner Antwort ausgearbeitet. Der Unterschied zwischen Daten und Datum kann ein bisschen ein "Gotcha" sein. –

Antwort

2

Ok ich durch ein kleines Dummy-Projekt lief und Sie sind nicht weit weg, du ist nur nicht immer das Datum (im Gegensatz zu datetime) von datetime.now() und so müssen Sie einen zusätzlichen Methodenaufruf hinzufügen:

expiring_soon = Promotion.objects.filter(end_date = datetime.now().date() + timedelta(days=7)) 

beachten Sie auch, dass datetime.now() gibt Ihnen eine nicht-lokalisierte datetime so könnten Sie etwas sehen, wo die Ergebnisse scheinen von einem Tag ab, weil UTC ist vor/hinter dir .

Verwandte Themen