【Django】DateField・DateTimeFieldチェックでフォーマットエラーになってしまう場合の対応方法
DjangoでDateField・DateTimeFieldのチェックがバリデーションエラーになってしまう場合の対応方法です。
事象
DateFieldの日付フォーマットチェックで、指定したフォーマット(%Y/%m/%d)で入力したが、バリデーションチェックでエラーになる。
原因
Djangoの日付チェックで使用される「DATE_INPUT_FORMATS」に「’%Y/%m/%d’」が無いのが原因。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
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」に設定を追加して対処します。
1 2 3 4 5 6 7 8 9 10 |
# 日付フォーマット追加 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」でバリデーションエラーにならないように設定。
ディスカッション
コメント一覧
まだ、コメントがありません