django数量表单小部件

django数量表单小部件,django,django-forms,django-widget,Django,Django Forms,Django Widget,我想开发一个基本数量小部件,它是一个下拉选择框,使用一个整数,它将是数量的最大数量,用户可以从1到最大数量中进行选择 最后,我的表单将使用这个小部件,如果给定的数量大于最大值,它就不应该验证。(确实,普通用户无法选择超过最大值的选项,但我想可以通过向服务器发送直接请求来尝试。) 如何做到这一点 谢谢 编辑: 我认为它可以像这样开始,但我希望我的字段是一个选择(从1到最大数量),而不是文本输入字段 def quantity_field(quantity=1): class Quantity

我想开发一个基本数量小部件,它是一个下拉选择框,使用一个整数,它将是数量的最大数量,用户可以从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
好的,我已经做到了:

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
采购表格(10)的输出:

>>打印d
采购数量:
1.
2.
3.
4.
5.
6.
7.
8.
9
10
还验证:

>>> 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.']
>>d.clean(5)
5.
>>>d.清洁(11)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/usr/local/lib/python2.6/dist packages/django/forms/fields.py”,第187行,干净
引发验证错误(self.error\u消息['max\u value']%self.max\u value)
ValidationError:[确保此值小于或等于10']

到目前为止你有什么,它是如何工作的?你好,伊格纳西奥,我编辑了这篇文章以澄清问题。
>>> 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.']