50

管理インターフェースと newforms には、選択肢を定義できる優れたヘルパーがあります。次のようなコードを使用できます。

APPROVAL_CHOICES = (
    ('yes', 'Yes'),
    ('no', 'No'),
    ('cancelled', 'Cancelled'),
)

client_approved = models.CharField(choices=APPROVAL_CHOICES)

フォームにドロップダウン ボックスを作成し、ユーザーにそれらのオプションのいずれかを選択するように強制します。

チェックボックスを使用して複数を選択できる一連の選択肢を定義する方法があるかどうか疑問に思っていますか? (ユーザーがそれらの最大数を選択できると言えるのもいいでしょう。)おそらく実装されている機能のようですが、ドキュメントで見つけることができないようです。

4

2 に答える 2

88

フォーム ライブラリに関しては、MultipleChoiceFieldフィールドとCheckboxSelectMultipleウィジェットを使用してそれを行います。フィールドの検証メソッドを記述することで、行われた選択の数を検証できます。

class MyForm(forms.Form):
    my_field = forms.MultipleChoiceField(choices=SOME_CHOICES, widget=forms.CheckboxSelectMultiple())

    def clean_my_field(self):
        if len(self.cleaned_data['my_field']) > 3:
            raise forms.ValidationError('Select no more than 3.')
        return self.cleaned_data['my_field']

管理アプリケーションでこれを取得するには、ModelForm をカスタマイズし、適切な ModelAdmin で使用されるフォームをオーバーライドする必要があります。

于 2008-09-29T07:17:46.533 に答える