Rob*_*bus 4 forms django django-forms
我有一个这样的表格:
class SomeForm(forms.Form):
first = forms.IntegerField(max_value= DontWantToSetYet)
second = forms.IntegerField(max_value= DontWantToSetYet)
third = forms.IntegerField(max_value= DontWantToSetYet)
Run Code Online (Sandbox Code Playgroud)
如何在运行时设置max_values?IE
if request.method == 'POST':
form = SomeForm(request.POST, max_values = {'first':10,'second':50,'third':666})
[...]
Run Code Online (Sandbox Code Playgroud)
您可以在__init__
方法中的字段上设置最大值,如下所示
class SomeForm(forms.Form):
def __init__(self, max_values, *args, **kwargs):
super(SomeForm, self).__init__(*args, **kwargs)
self.fields['first'] = forms.IntegerField(max_value=max_values['first'])
...
first = forms.IntegerField(max_value= DontWantToSetYet)
second = forms.IntegerField(max_value= DontWantToSetYet)
third = forms.IntegerField(max_value= DontWantToSetYet)
Run Code Online (Sandbox Code Playgroud)
编辑:
self.fields['first'].max_value = max_values['first']
Run Code Online (Sandbox Code Playgroud)
当我尝试时没有奏效,重新定义像这样的字段定义
self.fields['first'] = forms.IntegerField(max_value=max_values['first'])
Run Code Online (Sandbox Code Playgroud)