1. ホーム
  2. django

[解決済み] RuntimeWarning: DateTimeFieldがナイーブなdatetimeを受信した

2022-03-23 23:16:09

質問

IPythonを使って簡単なメールを送信しようとしています。モデルは何も設定していないのにこのエラーが出ます。どうしたらいいでしょうか?

エラー: /home/sourabh/Django/learn/local/lib/python2.7/site-packages/django/db/models/fields/ です。 開始 .py:827: RuntimeWarning: DateTimeField は、タイムゾーンのサポートが有効なときに、ナイーブな datetime (2013-09-04 14:14:13.698105) を受け取りました。 RuntimeWarning)

試してみた : まず最初に USE_TZ = True を設定ファイルに追加し pytz (可能であれば)。

エラーが変更されました。

(learn)sourabh@sL:~/Django/learn/event$ python manage.py shell
/home/sourabh/Django/learn/local/lib/python2.7/site-packages/django/db/backends/sqlite3/base.py:53: RuntimeWarning: SQLite received a naive datetime (2013-09-05 00:59:32.181872) while time zone support is active.
  RuntimeWarning)

解決方法は?

問題は Django の設定にあるのではなく 日付 モデルに渡されます。タイムゾーンを意識したオブジェクトはこんな感じです。

>>> from django.utils import timezone
>>> import pytz
>>> timezone.now()
datetime.datetime(2013, 11, 20, 20, 8, 7, 127325, tzinfo=pytz.UTC)

そして、これがナイーブなオブジェクトです。

>>> from datetime import datetime
>>> datetime.now()
datetime.datetime(2013, 11, 20, 20, 9, 26, 423063)

ですから、メールの日付をどこかに渡す場合 (そしてそれが最終的に何らかのモデルに到達する場合) は、Django の now() . そうでない場合は、おそらくタイムゾーンなしで日付を取得する既存のパッケージの問題であり、そのパッケージにパッチを当てるか、警告を無視するか、USE_TZをFalseに設定することができます。