问题描述
使用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模式中?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!