2016-11-25 46 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