djangoのmodels.py内でdatetime型の引き算をしたいです。
modelの中に開始時間と終了時間があり、終了ー開始=作業時間というデータを
model内で計算したいのですが方法がわかりません。
saveメソッドを使用する方法を試してみたのですが、テンプレート側で呼び出すと<django.db.models.fields.DateTimeField>と表示され計算結果が出ませんでした。
テンプレート側で引き算する分には表示できるのですが、
グラフ化するにあたってmodel内に引き算した時間のレコードを作りたいです。
そもそも可能なのか含めご教示いただけないでしょうか。
該当のソースコード
models.py from django.db import models from django.utils import timezone import datetime class time_mgr(models.Model): dt = models.DateTimeField #終了時間 ー 開始時間 = 作業時間 startdt = models.DateTimeField(default=timezone.now) #開始時間 enddt = models.DateTimeField(default=timezone.now) #終了時間 def save(self, *args, **kwargs): self.dt = self.enddt - self.startdt super(time_mgr, self).save(*args, **kwargs)
エラーメッセージ
dt = models.DateTimeFieldを
dt = models.DurationField(blank=True)へ変更した後に以下のエラーになりました。
ProgrammingError at /page1/ column "dt" is of type timestamp with time zone but expression is of type interval LINE 1: ...tamptz, '2021-03-18T22:19:06+09:00'::timestamptz, '0 days 72... ^ HINT: You will need to rewrite or cast the expression.
python3.9 django3.1.6 Postgres 3.0.0
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/17 15:00
2021/03/18 00:51
2021/03/18 14:19