如何查询获取最近5个月的记录?

时间:2017-10-10 07:30:11

标签: django

我有一个名为' DemoModel'它有一个名为demo_date的字段。

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

我的模特看起来像

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

3 个答案:

答案 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)
)

答案 1 :(得分:0)

使用

dateutil.relativedelta import relativedelta

准确计算five_months_ago参数。

然后得到这样的对象:

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

答案 2 :(得分: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)