如何从datetime字段中减去天数,然后在Django中过滤?

2024-04-24 14:21:49 发布

您现在位置:Python中文网/ 问答频道 /正文

这是型号:

class Work(models.Model):
    start_date = DateTimeField()
    end_date = DateTimeField()
    sot = IntegerField(help_text='days')

我想从结束时间中减去开始时间,得到与sot比较的天数,并过滤掉我想要的数据。
我可以通过循环得到我想要的,但这是非常不雅观的,有没有办法通过ORM来做到这一点?

[w for w in Work.objects.all() if (w.end_date - w.start_date).days < w.sot ]

Tags: textdatemodelmodels时间helpdaysstart
1条回答
网友
1楼 · 发布于 2024-04-24 14:21:49

你可以使用F expiression

  1. 使用F引用字段end_datestart_date
  2. end_date中减去start_date,这会产生以微秒为单位的时间戳差异。你知道吗
  3. 将时间戳差(以微秒为单位)转换为天
  4. sot字段过滤日差
Work.objects.filter(sot__gt=(F('end_date')-F('start_date'))/(3600*24*1000*1000))

相关问题 更多 >