web-dev-qa-db-ja.com

DateTimeFieldが単純な日時を受け取りました

DateTimeField列を持つモデルがあります。

データベースの行を挿入しようとしていますcurrent_time値をSQLクエリでテーブルに直接挿入します。

次のようなMySQLデータベースの私のSQLクエリ:

INSERT INTO MyTable (..., my_datetime, ...) VALUES (..., current_time, ...)

そして得る:

RuntimeWarning:タイムゾーンサポートがアクティブなときに、DateTimeField ModelName.field_nameが単純な日時(2014-01-09 22:16:23)を受け取りました。

警告なしにSQLクエリによって現在の時刻をテーブルに直接挿入する方法は?

18
DoNotArrestMe

Falsetruの回答に加えて、datetimeがすでに作成されている場合は、それをタイムゾーン対応に変換できます。

from Django.utils import timezone
my_datetime = timezone.make_aware(my_datetime, timezone.get_current_timezone())
41
hellsgate

Django.utils.timezone.now の代わりに datetime.datetime.now を使用します。

from Django.utils import timezone
current_time = timezone.now()
22
falsetru

説明 here のように、localizepytzを使用して日時のタイムゾーンを認識させることもできます。

UTC:

import pytz
dt_aware = pytz.utc.localize(dt_naive)

その他のタイムゾーン:

import pytz
tz = 'Europe/Berlin' #or whaterver timezone you want
dt_aware = pytz.timezone(tz).localize(dt_naive)

そして here タイムゾーンのリスト。

3
J0ANMM