我有一个名为'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建议 –