2017-09-27 15 views
0

ユーザーから期間を収集するためにドロップダウンボックスに接続された整数フィールドを作成しようとしています。そこから、私はオブジェクトを分割して今日の日付に12週間を追加して、期日フィールドを記入することができるというような、例えば12Wのような機械のための読みやすいフォーマットのテーブルにそれを格納したいと思います。ドロップダウンボックスで整数フィールドを作成します。 Djangoカスタムウィジェット?

[12][Days] 
    [weeks] 
    [Months] 

例えば

が、これは、顧客のウィジェットでしょうか?またはそれを完了する良い方法がありますか?

答えて

1

フォームだけが必要な場合は、2つのフォームフィールド(両方とも既にDjangoに存在しています)とデフォルトのウィジェットを使用できます。 [[0, "Days"],[1, "Weeks"],[2, "Months"],]

ようchoices何かだから、それは次のようになりますと

IntegerField (forms) + ChoiceField (forms)

class MyForm(forms.Form): 
    amount = forms.IntegerField(label='Your name') 
    units = forms.ChoiceField(choices=[[0, "Days"],[1, "Weeks"],[2, "Months"],]) 

あなたは、モデルが個別にこれらの2つの値を保存したい場合は、あなたが使用することができ(IntegerField (models)とのいくつかのフィールドあなたの好みはchoicesです)。その後、ModelFormを使用するので、フォーム上にフィールドを定義する必要はありません。

2つの別々の値よりもさらに機械的なフォーマットが必要な場合...データベースに間隔を保存できるかどうかをチェックし、DurationFieldの使用を検討してください。ただし、自動的に2つのウィジェットを持つきれいなフォームを作成する可能性は失われます。

+0

お返事ありがとうございます。私は、intergerフィールドの中からMultivalueFieldを作りました。 –

+0

@Alldayあなたはそれを解決するために別のアプローチを使用しました。あなた自身の質問に答えて(https://stackoverflow.com/help/self-answer)、代わりにあなた自身の答えを受け入れることを検討してください:) – Art

+0

まだ100%ではありません、私はレンダリングするウィジェットを得ることができませんあなたが見たいと思ったら、私はコードシェアを設定しました。それは私にはうまくいくはずですが、まだ基本的なテキスト入力を受けているようです。 https://codeshare.io/2KoL6P - コードはこのページにあります –

関連する問題