如何把timedelta放在django模式中? [英] How to put timedelta in django model?

查看:95
本文介绍了如何把timedelta放在django模式中?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用inspectdb,我可以从postgres获取一个间隔字段到django。在Django中,它是一个TextField。我检索的对象确实是一个timedelta对象!

With inspectdb I was able to get a "interval" field from postgres into django. In Django, it was a TextField. The object that I retrieved was indeed a timedelta object!

现在我想把这个timedelta对象放在一个新的模型中。最好的方式是做什么?因为在TextField中放置timedelta会导致对象的str版本...

Now I want to put this timedelta object in a new model. What's the best way to do this? Because putting a timedelta in a TextField results in the str version of the object...

推荐答案

您可以将timedelta简单地归一化单个浮点数(以天或秒为单位)。

You can trivially normalize a timedelta to a single floating-point number in days or seconds.

这是规范化到天版本。

float(timedelta.days) + float(timedelta.seconds) / float(86400)

你可以轻而易举的浮点数进入timedelta。

You can trivially turn a floating-point number into a timedelta.

>>> datetime.timedelta(2.5)
datetime.timedelta(2, 43200)

所以,你的timedelta作为一个浮动。

So, store your timedelta as a float.

这是规范化到秒的版本。

Here's the "Normalize to Seconds" version.

timedelta.days*86400+timedelta.seconds

这是相反的(使用秒) / p>

Here's the reverse (using seconds)

datetime.timedelta( someSeconds/86400 )

这篇关于如何把timedelta放在django模式中?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆