2016-04-02 20 views
0

Şu anda bir alanda end_date ile Promotion tablo var için mantık Geçerlilik olarak tanımlar:Django tam 7 gün

end_date = models.DateField('date') 

Ben tam 7 içinde sona erecek, tüm promosyonlar için filtre bir sorgu oluşturmak istiyoruz günler.

Bunu yapmayı nasıl yaparım? Sadece datetime.now() den (datetime aksine) tarihi alma değiliz

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

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

Bunu denediniz mi? (End_date = datetime.now(). Date + timedelta (gün = 7)) '? –

+0

'.filter (end_date = datetime.now(). Date() + timedelta (gün = 7))' çalışır. –

+0

Evet, cevabımda detaylandırdım. Tarihler ve tarihler arasındaki fark biraz "gotcha" olabilir. –

cevap

2

Tamam ben biraz kukla proje ile koştu ve uzak değiliz: hayır şans ile bu denedim ve böylece ekstra bir yöntem çağrısı eklemek zorunda: Ayrıca datetime.now() verir unutmayın

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

olmayan lokalize UTC arkanızda/ilerisinde olduğu için böylece sonuçları bir gün kapalı görünüyor şey görebilirsiniz datetime .

İlgili konular