我尝试做一个PhoneField,将值转换为标准值。在
在这种情况下,我想使用这种干净的方法。在
def clean(self):
phone = self.cleaned_data.get('phone')
# Is it already standardized ?
if phone.startswith('+'):
mo = re.search(r'^\+\d{2,3}\.\d{9,11}$', phone)
if not mo:
raise forms.ValidationError(_(u'Vous devez entrer un numéro de téléphone. (+33.389520638 ou 0389520638).'))
else:
return phone
# If not, it must be a french number.
phone = re.sub("\D", "", phone) # Suppression des caractères séparateurs
mo = re.search(r'^\d{10}$', phone) # Numéro à 10 chiffres
if not mo:
raise forms.ValidationError(_(u'Vous devez entrer un numéro de téléphone. (+33.389520638 ou 0389520638).'))
else:
phone = mo.group()[-9:]
return u'+33.%s' % phone
如果我把它用在形式上,它会很好地工作。 但我想把它用作表单域。在
我试着这样做:
^{pr2}$但是clean方法永远不会被调用。你能帮助我吗?在
您正在混合模型字段和表单字段。在
首先需要定义表单字段,然后需要要求相应的模型字段将这些表单字段用于模型表单。在
见specifying-the-form-field-for-a-model-field documentation
基本上,您需要在model字段上定义一个名为formfield的方法
您在上面创建的字段有一个干净的方法,这是表单字段的要求,而不是模型字段
所以,现在您应该定义一个表单字段(您已经定义的表单字段,除了从
forms.CharField
扩展而不是从models.CharField
)扩展它之外,然后根据模型字段创建定义定义定义一个模型字段,并包括上面所述的方法。在或者,简单地说,您可以选择定义一个表单字段,然后在模型表单中重写这个特定模型字段的默认表单字段。(在这种情况下,除非从该模型表单输入数据,否则不会进行验证)
以下是我如何使用becomingGuru修复它的帮助:)
谢谢你的帮助。在
相关问题 更多 >
编程相关推荐