2017-10-10 78 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)