Jac*_* Ha 37 python django model
使用inspectdb,我能够从postgres到django获得一个"间隔"字段.在Django中,它是一个TextField.我检索到的对象确实是一个timedelta对象!
现在我想将这个timedelta对象放在一个新模型中.最好的方法是什么?因为在TextField中放置timedelta会导致对象的str版本...
S.L*_*ott 30
您可以在几天或几秒内将timedelta简单地标准化为单个浮点数.
这是"Normalize to Days"版本.
float(timedelta.days) + float(timedelta.seconds) / float(86400)
Run Code Online (Sandbox Code Playgroud)
您可以将浮点数简单地转换为timedelta.
>>> datetime.timedelta(2.5)
datetime.timedelta(2, 43200)
Run Code Online (Sandbox Code Playgroud)
所以,将你的timedelta存储为浮点数.
这是"Normalize to Seconds"版本.
timedelta.days*86400+timedelta.seconds
Run Code Online (Sandbox Code Playgroud)
这是相反的(使用秒)
datetime.timedelta( someSeconds/86400 )
Run Code Online (Sandbox Code Playgroud)
首先,定义您的模型:
class TimeModel(models.Model):
time = models.FloatField()
Run Code Online (Sandbox Code Playgroud)
要存储timedelta对象:
# td is a timedelta object
TimeModel.objects.create(time=td.total_seconds())
Run Code Online (Sandbox Code Playgroud)
要从数据库中获取timedelta对象:
# Assume the previously created TimeModel object has an id of 1
td = timedelta(seconds=TimeModel.objects.get(id=1).time)
Run Code Online (Sandbox Code Playgroud)
注意:我在这个例子中使用Python 2.7.
归档时间: |
|
查看次数: |
32738 次 |
最近记录: |