我有一個名爲'DemoModel'的模型,它有一個名爲demo_date的字段。如何查詢獲取最近5個月的記錄?
我想通過查詢demo_date字段獲取最近5個月即(從當前月份記錄到過去5個月記錄)的記錄。
我的模型看起來像
class DemoModel(models.Model):
demo_date = models.DateTimeField()
我有一個名爲'DemoModel'的模型,它有一個名爲demo_date的字段。如何查詢獲取最近5個月的記錄?
我想通過查詢demo_date字段獲取最近5個月即(從當前月份記錄到過去5個月記錄)的記錄。
我的模型看起來像
class DemoModel(models.Model):
demo_date = models.DateTimeField()
使用
dateutil.relativedelta import relativedelta
準確計算five_months_ago參數。
,然後得到的對象是這樣的:
target_set = DemoModel.objects.filter(demo_date__gte=five_months_ago)
感謝您簡單和可以理解的代碼 –
此功能給訂閱或添加個月
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)
)
from datetime import datetime, timedelta
today = datetime.today()
long_ago = today + timedelta(days=-150)
retrieved_data = DemoModel.objects.filter(demo_date__gte=long_ago)
發表您嘗試.. –
@praveen JB你檢查我的回答 – Robert
沒有,我試圖爲@rob建議 –