【问题标题】:Django - change min_length in form __init__?Django - 以 __init__ 形式更改 min_length?
【发布时间】:2012-02-07 17:58:59
【问题描述】:
有什么方法可以在表单构造函数中更改字段的 *min_length* 参数?
这不起作用:
def __init__(self, *args, **kwargs):
super(CreateTeamForm, self).__init__(*args, **kwargs)
self.fields['primary_color'].min_length = 4
【问题讨论】:
标签:
django
forms
multi-model-forms
【解决方案1】:
尝试在__init__ 方法中设置字段的validators 属性。
from django.core.validators import MinLengthValidator
class MyForm(forms.Form):
primary_color = forms.CharField()
def __init__(self, *args, **kwargs):
super(MyForm, self).__init__(*args, **kwargs)
# get all the validators on the field which are not MinLengthValidator
validators = [v for v in self.fields['primary_color'].validators if not isinstance(v, MinLengthValidator)]
min_length = 10
validators.append(MinLengthValidator(min_length))
self.fields['primary_color'].validators = validators