在表单类中的clean方法中需要Django字段

时间:2009-10-29 10:42:07

标签: django forms required-field

我想在表单文件的clean方法中重新定义字段的必需属性:

class NewUserFullForm(NewUserForm):

REGEX_PHONE = '^(\+[0-9]{2})[ \.\-]?[0-9][ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}$'

phone = forms.RegexField(REGEX_PHONE, help_text='Ex : +33 1 34 12 52 30')
fax = forms.RegexField(REGEX_PHONE, help_text='Ex : +33 1 34 12 52 30',  required=False)
gsm = forms.RegexField(REGEX_PHONE, help_text='Ex : +33 6 34 12 52 30',  required=False)

def clean(self):
   if self.cleaned_data["asso_waldec"] == True:
      self.fields['phone'].required = True

但是我的干净方法不起作用

2 个答案:

答案 0 :(得分:2)

喂!你看过这个文件/例子了吗?

Django Validation

也许这会清除它。

答案 1 :(得分:0)

一个问题是clean函数必须返回完整的清理数据集(参见docs)。我不相信更改“必需”属性,而是应该检查“电话”是否为空,并引发描述问题的“验证错误”。

此外,由于您的表单继承自'NewUserForm',您应该调用 super(NewUserFullForm, self).clean()以确保清理继承的字段。