2016-11-25 41 views
0

考慮以下模型:最新紀錄達到一定日期

class MyModel(models.Model): 
    date = models.DateField() 
    comments = models.CharField(max_length=16) 

包含以下記錄:

1/May/2016: a 
20/May/2016: b 
3/Nov/2016: c 
15/Nov/2016: d 

我想獲得最新的記錄達到一定的日期,例如latest_up_to_date(18/August/2016)應返回b

+0

如何做一個模型包含具有相同名稱的兩個字段? – arulmr

+0

@arulmr:因爲這是複製/粘貼錯誤。現在修復。 – SaeX

回答

1
date_val = datetime.datetime.strptime('1/Aug/2016', '%d/%b/%Y')  
MyModel.objects.filter(date__lte=date_val).latest('date') 
+0

這是另一種方式。接受這個而不是我自己的回覆。 – SaeX

1

首先排除較新的對象,然後使用latest()

latest_up_to_date = None 
try: 
    latest_up_to_date = MyModel.objects.exclude(date__gt=datetime.date(2016, 8, 18)).latest('date') 
except MyModel.DoesNotExist: 
    pass