【Django】DateField・DateTimeFieldチェックでフォーマットエラーになってしまう場合の対応方法
DjangoでDateField・DateTimeFieldのチェックがバリデーションエラーになってしまう場合の対応方法です。
事象
DateFieldの日付フォーマットチェックで、指定したフォーマット(%Y/%m/%d)で入力したが、バリデーションチェックでエラーになる。
原因
Djangoの日付チェックで使用される「DATE_INPUT_FORMATS」に「’%Y/%m/%d’」が無いのが原因。
django/conf/global_settings.pyから一部抜粋
DATE_INPUT_FORMATS = [
"%Y-%m-%d", # '2006-10-25'
"%m/%d/%Y", # '10/25/2006'
"%m/%d/%y", # '10/25/06'
"%b %d %Y", # 'Oct 25 2006'
"%b %d, %Y", # 'Oct 25, 2006'
"%d %b %Y", # '25 Oct 2006'
"%d %b, %Y", # '25 Oct, 2006'
"%B %d %Y", # 'October 25 2006'
"%B %d, %Y", # 'October 25, 2006'
"%d %B %Y", # '25 October 2006'
"%d %B, %Y", # '25 October, 2006'
]
DATETIME_INPUT_FORMATS = [
"%Y-%m-%d %H:%M:%S", # '2006-10-25 14:30:59'
"%Y-%m-%d %H:%M:%S.%f", # '2006-10-25 14:30:59.000200'
"%Y-%m-%d %H:%M", # '2006-10-25 14:30'
"%m/%d/%Y %H:%M:%S", # '10/25/2006 14:30:59'
"%m/%d/%Y %H:%M:%S.%f", # '10/25/2006 14:30:59.000200'
"%m/%d/%Y %H:%M", # '10/25/2006 14:30'
"%m/%d/%y %H:%M:%S", # '10/25/06 14:30:59'
"%m/%d/%y %H:%M:%S.%f", # '10/25/06 14:30:59.000200'
"%m/%d/%y %H:%M", # '10/25/06 14:30'
]
対処方法
プロジェクトの「setting.py」に設定を追加して対処します。
# 日付フォーマット追加
from django.conf.global_settings import DATETIME_INPUT_FORMATS, DATE_INPUT_FORMATS
DATE_INPUT_FORMATS += ('%Y/%m/%d',)
DATETIME_INPUT_FORMATS += [
'%Y/%m/%d',
'%Y/%m/%d %H:%M:%S',
]
「DATE_INPUT_FORMATS」以外に、「DATETIME_INPUT_FORMATS」も「%Y/%m/%d」でバリデーションエラーにならないように設定。
ディスカッション
コメント一覧
まだ、コメントがありません