DjangoでDateTimeField
を使った際の警告の解消法についてメモします。
発生した場面
Djangoのmodels.pyにて、日時をデフォルト値として登録する際に発生しました。
#models.py
import datetime
from django.db import models
#略
class TestTimeModel(models.Model):
time = models.DateTimeField(
default=datetime.datetime.now
)
このデータベースを登録しようとすると、以下の警告が表示されました。
$python manage.py shell
>>> from app.models import TestTimeModel
>>> b = TestTimeModel()
>>> b.save()
...warnings.warn("DateTimeField %s received a naive datetime (%s)"
ちなみに、データベースへの登録自体はできていました。
警告表示の消し方
timezone.now
を使うと警告が表示されずにデータベース登録ができました。
from django.utils import timezone #<-新規追加
class TestTimeModel(models.Model):
time = models.DateTimeField(
default=timezone.now #<-変更
)
django shell にて登録してみると、エラーが表示されません。
$python manage.py shell
>>> from app.models import timeModel
>>> b = timeModel()
>>> b.save()
>>>
まとめ
djangoでデータベースに現在時刻を登録する際の、警告を出さない方法について解決できる方法をまとめました。
何か役に立てば幸いです。
リンク
コメント