私はこの質問が初めて議論されたことを知っていますが、私は問題に固執し、少し混乱しました.
したがって、時間内にリマインダーを送信する必要があるセロリ タスクがあります。
私の設定では:
USE_TZ = True
TIMEZONE = 'Asia/Singapore'
たとえば、次のようなモデルがあります。
class Reminder(models.Model):
created = models.DateTimeField(default=timezone.now)
これは単純化されたモデルで、より多くのフィールドがありますが、DateTime フィールド内に配置する際に問題があります。
それで、私はdjangoシェルを開いて、次のような時間を取得します:
timezone.now()
reminder.created
次のように UTC で適切な時刻を示します。
datetime.datetime(2016, 12, 22, 8, 47, 43, 370101, tzinfo=<UTC>) #tz now
datetime.datetime(2016, 12, 22, 8, 47, 43, 370101, tzinfo=<UTC>) #reminder created
しかし、コンソールからタスクを実行し、印刷を設定するか、ipdb でデバッグを試みると、上記の時間で取得できます。
2016-12-22 09:17:19.141242+00:00 # tz now
2016-12-22 16:52:43.366542+00:00 # reminder time CONVERT UTC+8 like Singapore but it became UTC now!!!
だから、私はそれがどのように進んでいるのか理解できません。もちろん、この場合、日時を正しく比較することはできません。
Django 1.8 と DB PostgreSQL