2
現在、文字列として表されている時間をPython 2.7のDjango TimeFieldモデルに読み込み、同時にfloatでスケールします。例えばDjango TimeFieldの時間をfloatで掛ける
:
00:31:14/1.0617 = 00:29:20
私が成功した時に読み込まれ、モデルに保存されますが(現在、私は背中のうち時刻オブジェクトを読んで「素敵」な方法で時間をスケーリングすることはできませんしましたデータベースを更新してください)。
データベースに保存する前に、この計算を行うためにTimeFieldの基になっているpythonデータ型オブジェクトを使用したいと思います。
関連するコード:
class Time(models.Model):
time = models.TimeField()
date = models.DateField()
date = "12/6/2009"
time = "00:31:14"
date = datetime.strptime(date, "%d/%m/%Y").strftime("%Y-%m-%d")
time = models.Time(date=date, time=time)
time.save()
db_instance = models.Time.objects.all().filter(id=time.id)[0]
db_instance.time = db_instance.time.replace(
minute=int((db_instance.time.minute * 60 + db_instance.time.second)/1.0617)/60,
second=int((db_instance.time.minute * 60 + db_instance.time.second)/1.0617) % 60)
更新
Dandekarによって示唆されるように、私は乗算と除算を含めることはtimedeltaクラスを拡張しました:
from datetime import timedelta
class TimeDeltaExtended(timedelta):
def __div__(self, divisor):
return TimeDeltaExtended(seconds=self.total_seconds()/divisor)
def __mul__(self, multiplier):
return TimeDeltaExtended(seconds=self.total_seconds()*multiplier)