/ ドロップダウンボックスで整数フィールドを作成します。 Djangoのカスタムウィジェット? - django、django-models、django-forms

ドロップダウンボックスで整数フィールドを作成します。 Djangoカスタムウィジェット? - django、django-models、django-forms

整数フィールドを作成しようとしていますドロップダウンボックスを使用して、ユーザーから期間を収集します。そこから私はそれを私がオブジェクトを分割し、今日の日付に12週間を追加して期限フィールドを埋めることができることから12Wのような機械のためのある種の可読フォーマットでそれをテーブルに格納したいと思います。

例えば

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

これは顧客ウィジェットでしょうか。それともそれを完成させるより良い方法はありますか?

回答:

回答№1は1

単にフォームが欲しいなら、2つのフォームフィールドを使うことができます。両方ともDjangoにすでに存在しています、そしてそれらのデフォルトウィジェット。

IntegerField(フォーム) + ChoiceField(フォーム) 〜と 選択肢 何かのようなもの [[0, "Days"],[1, "Weeks"],[2, "Months"],]

だからそれはようになります:

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

モデルにこれら2つの値を別々に保存させたい場合は、(IntegerField(モデル) そしてあなたの好みのある分野 選択肢)それから ModelFormそのため、フォーム上のフィールドを定義する必要はもうありません。

あなたが2つの別々の値よりもっともっと機械的なフォーマットを望むならば...あなたのデータベースが間隔を保存することができるかどうかチェックして、使うことを考慮しなさい DurationField。しかし、あなたは自動的に2つのウィジェットできちんとしたフォームを作成する可能性を失います。