2017-11-13 12 views
0

私は、ユーザーの誕生日を取るフォームを持っています。デフォルトでは、DjangoはMM/DD/YYを含む日付の3つの入力フォーマットを受け入れます。しかし、02/13/45のようなものを入力すると、02/13/2045として保存されます。私はドキュメント内のいくつかのスレッドを見つけることが予想される場所を見てきましたが、まだ何もありません。誰かが私を正しい方向に押し込むことはできますか?Django model DateField:2桁の年を「19xx」として保存する方法を教えてください。

+1

は、それが入力をチェックするような単純なものでした減算チェックすることです、そして今年は、将来的にある場合、1000を引く?私はdjangoのフォームを混乱させて以来、少ししてきました。 – SuperStew

+0

@SuperStewここで私はこの非常に明白な一般的な問題に答えるダーススレッドを見つけることができないのだろうかと思っていた...ありがとう、私はこれを試してみます。 – empathyattack

答えて

2

DateFieldちょうどuses the datetime.strptime methodであり、順にthe underlying C strftime implementationを使用します。 2桁の年を解析する方法を変更する方法はありません。コメントで述べたように、これを行うには、おそらく最良の方法は、それが将来的にだ場合、その後、100

def clean_birthdate(self): 
    birthdate = self.cleaned_data('birthdate') 
    if birthdate > datetime.datetime.today(): 
     birthdate = birthdate.replace(year=(birthdate.year-100)) 
    return birthdate 
+0

ありがとう!私はこれを試み、 'TypeError:unorderable types'を取得しています。これは、この時点で、 'birthdate'プロセスのこの時点でまだ文字列であり、まだ日付オブジェクトに変換されていないためですか? – empathyattack

+0

完全なエラーを表示できますか? 'cleaned_data'のポイントは、それが既に浄化されている、すなわち正しいタイプに変換されたデータを含んでいなければならないということです。 –

+0

確かに、ここにエラーがあります:https://pastebin.com/7S8ueXTE そして私のコード:https://pastebin.com/aVssUfE0 – empathyattack

関連する問題