1

ドロップダウン選択ボックスである基本数量ウィジェットを開発したいと思います。これは、最大数量となる整数を消費し、ユーザーは 1 から最大数量まで選択できます。

最終的に、私のフォームはこのウィジェットを使用することになり、何らかの理由で指定された金額が最大値を超えている場合は、検証されません。(実際、通常のユーザーは最大数を超えて選択することはできませんが、サーバーに直接リクエストを送信することで試すことができると思います。)

これはどのように行うことができますか?

ありがとう

編集: 最初はこのようなものになると思いますが、フィールドをテキスト入力フィールドではなく、選択(1から最大数量まで)にしたいです。

def quantity_field(quantity=1):
    class QuantityForm(forms.Form):
        forms.IntegerField(label="Purchase quantity",min_value=1,max_value=quantity,required=True,widget=forms.Select)
    return QuantityForm
4

1 に答える 1

3

わかりました私はそれをやった:

def purchase_form(quantity=1):
    class QuantityForm(forms.Form):
        forms.IntegerField(label="Purchase quantity",min_value=1,max_value=quantity,required=True,widget=forms.Select(choices=  [ (i,i) for i in range(1,quantity+1) ]) )
    return QuantityForm

purchase_form(10) の出力:

>>>print d
<tr><th>Purchase quantity:</th><td><select name="x">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select></td></tr>

以下も検証します。

>>> d.clean(5)
5
>>> d.clean(11)
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/usr/local/lib/python2.6/dist-packages/django/forms/fields.py", line 187, in clean
    raise ValidationError(self.error_messages['max_value'] % self.max_value)
ValidationError: [u'Ensure this value is less than or equal to 10.']
于 2010-02-21T12:48:40.990 に答える