0

ユーザーがjQueryのDatePicker&TimePickerを使用して日付と時刻を選択/入力するフォーム(2つのフィールド)があります。出てくるフォーマットは次のとおりです。

 01/05/2011
 11:00 PM

フォームは送信されないため、これらの形式と、フォームクラスで使用しているDateFieldおよびTimeFieldとの競合があると思います。これは本当ですか?もしそうなら、これらの入力はどのような形式である必要がありますか?

ありがとう!

4

2 に答える 2

3

Djangoのソースを見ると、これらのフィールドの検証コードを読むことができます。

django / forms / fields.pyを見て、DateFieldクラスとTimeFieldクラスのto_python()メソッドを読んでください。

どちらも多くの入力タイプをサポートしているように見えます。

  • datetime.datetimeオブジェクトのインスタンス
  • datetime.dateオブジェクトのインスタンス
  • 設定DATE_INPUT_FORMATS(またはTIME_INPUT_FORMATS)に従ってフォーマットされた文字列

最後の選択肢はあなたが望むものだと思います。django / conf / global_settings.pyをチェックインすると、これらの設定のデフォルト値を確認できます。これには、さまざまなstrptime形式の文字列が含まれています。デフォルトのDATE_INPUT_FORMATSは次のとおりです。

'%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', # '2006-10-25', '10/25/2006', '10/25/06'
'%b %d %Y', '%b %d, %Y',            # 'Oct 25 2006', 'Oct 25, 2006'
'%d %b %Y', '%d %b, %Y',            # '25 Oct 2006', '25 Oct, 2006'
'%B %d %Y', '%B %d, %Y',            # 'October 25 2006', 'October 25, 2006'
'%d %B %Y', '%d %B, %Y',            # '25 October 2006', '25 October, 2006'

したがって、これらの方法のいずれかでフォーマットされた日付文字列は機能するはずです(ロケールが奇妙なものに設定されていないことを前提としています-各ロケールにはこのフィールドのロケール固有のオーバーライドがあり、作業しているロケールのロケールサブディレクトリを確認する必要がありますと)。

TIME_INPUT_FORMATSにも同様のロジックがあり、デフォルトでは次のとおりです。

'%H:%M:%S',     # '14:30:59'
'%H:%M',        # '14:30'

ですから、あなたの時間には午前/午後があるので、それがあなたのフォームが機能するのを妨げているのではないかと思います。

settings.pyでTIME_INPUT_FORMATSを手動でstrptime形式の文字列に設定できます。この文字列は、「%I:%M%p」のようになります(%rだけを使用することはできません。数秒かかるようです)。他のもの(Django管理インターフェースなど)との互換性のために、元の値も含めることをお勧めします。

私はjQueryの日付と時刻のピッカーにあまり詳しくありません-おそらく、Djangoですでにサポートされている形式で時刻を出力するように設定できますか?

于 2011-01-13T05:48:09.763 に答える
0

私はこのセットアップを使用するだけで正常に実行されています

LANGUAGE_CODE = 'fr-FR'

私のsettings.pyで、jQ​​ueryUIの言語ファイルを使用している場合、
このページにはjqueryUI言語ファイルの完全な例があります。

于 2011-01-13T07:35:23.960 に答える