2017-10-10 136 views
0

我有一个名为'DemoModel'的模型,它有一个名为demo_date的字段。如何查询获取最近5个月的记录?

我想通过查询demo_date字段获取最近5个月即(从当前月份记录到​​过去5个月记录)的记录。

我的模型看起来像

class DemoModel(models.Model): 
    demo_date = models.DateTimeField() 
+1

发表您尝试.. –

+0

@praveen JB你检查我的回答 – Robert

+0

没有,我试图为@rob建议 –

回答

0

使用

dateutil.relativedelta import relativedelta 

准确计算five_months_ago参数。

,然后得到的对象是这样的:

target_set = DemoModel.objects.filter(demo_date__gte=five_months_ago) 
+0

感谢您简单和可以理解的代码 –

0

此功能给订阅或添加个月

def monthdelta(date, delta): 
    m, y = (date.month+delta) % 12, date.year + ((date.month)+delta-1) // 12 
    if not m: m = 12 
    d = min(date.day, [31, 
     29 if y%4==0 and not y%400==0 else 28,31,30,31,30,31,31,30,31,30,31][m-1]) 
    return date.replace(day=d,month=m, year=y) 

查询到这里

from datetime import datetime 
query= DemoModel.objects.filter(demo_date__gte=monthdelta(datetime.now(), -5) 
) 
0
from datetime import datetime, timedelta 

today = datetime.today() 
long_ago = today + timedelta(days=-150) 

retrieved_data = DemoModel.objects.filter(demo_date__gte=long_ago)