【问题标题】:Django ORM Query - How to Subtract Time From Model Field?Django ORM 查询 - 如何从模型字段中减去时间?
【发布时间】:2015-07-23 23:31:16
【问题描述】:

我的查询从我的模型字段返回 Max 时间。

results = MyModel.objects.filter(
                id=pk,
                date__range=(start_time, end_time)
                ).values('my_id'
                ).annotate(max_time=Max('my_date_time'))

到目前为止,一切都很好。现在我需要从我的my_date_time 字段中输入subtract 时间(60 分钟)。

对我来说最方便的是如果我能以某种方式直接在我的 html 模板中减去时间。有没有可用的过滤器?

如果没有,有没有办法在这个查询中使用 MySQL SUBTIME() 函数或 Python timedelta

非常感谢您的建议和反馈!

如果之前已经有类似的问题被问过/回答过,不知何故我错过了,我深表歉意!

编辑:

是的,my_date_time 字段是有效的 datetime 模型字段。

【问题讨论】:

  • 返回值是datetime对象吗?
  • 是的,my_date_time 是一个有效的 datetime 对象
  • 那么看来您应该能够使用timedelta 对象从查询返回的datetime 对象中减去60 分钟。编辑:也许像这样datetime_object = mymodel_object - datetime.timedelta(minutes=60)
  • Nick,我试过了,失败了,你能提供一个代码示例吗?非常感谢!
  • 尼克,我没有效仿你的榜样。我该如何使用上面的results = MyModel.objects.filter(...

标签: python mysql sql django


【解决方案1】:
from datetime import timedelta

results = MyModel.objects.filter(
                id=pk,
                date__range=(start_time, end_time)
                ).values('my_id'
                ).annotate(max_time=Max('my_date_time'))
for result in results:
    result['max_time'] -= timedelta(minutes=60)

【讨论】:

  • 谢谢!出于某种原因,我收到了'dict' object has no attribute 'date'。有什么建议吗?
  • 谢谢!非常感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-14
  • 1970-01-01
  • 1970-01-01
  • 2017-09-03
  • 2013-08-01
  • 2013-03-03
  • 1970-01-01
相关资源
最近更新 更多