Django在运行时形成integerField设置max_value [英] Django forms integerField set max_value on runtime

查看:82
本文介绍了Django在运行时形成integerField设置max_value的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个这样的表单:

class SomeForm(forms.Form):
 first = forms.IntegerField(max_value= DontWantToSetYet)
 second = forms.IntegerField(max_value= DontWantToSetYet)
 third = forms.IntegerField(max_value= DontWantToSetYet)

如何在运行时设置max_values? IE

How can I set the max_values at runtime? I.E

if request.method == 'POST':
    form = SomeForm(request.POST, max_values = {'first':10,'second':50,'third':666})
    [...]


推荐答案

您可以在 __ init __ 方法中设置字段的最大值,如下所示

you can set the max values on fields in the __init__ method, as shown here

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)

编辑:

self.fields['first'].max_value = max_values['first']

没有我尝试的时候工作成功,重新定义了字段定义像这样的作品

didn't worked when I tried, redefining the field definition like this works

self.fields['first'] = forms.IntegerField(max_value=max_values['first'])

这篇关于Django在运行时形成integerField设置max_value的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆