class UsuarioForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(UsuarioForm, self).__init__(*args, **kwargs)
self.fields['cpf'].widget.attrs['maxlength'] = 14
self.fields['telefone'].widget.attrs['maxlength'] = 15
self.fields['celular'].widget.attrs['maxlength'] = 15
nome = forms.CharField(widget=forms.TextInput(attrs={'readonly': True,
'icone': 'fa fa-font'}))
usuario = forms.CharField(widget=forms.TextInput(attrs={'readonly': True,
'icone': 'fa fa-user'}))
def clean(self):
cleaned_data = self.cleaned_data
self.data['cpf'] = re.sub("[\.-]", "", self.data['cpf'])
clean_data_again_to_revalidate_the_field
class Meta:
model = Usuario
exclude = ['codigo', 'estabelecimento', 'dono', 'data', 'estabelecimento', 'cargo', 'usuario']
widgets = {
'cpf': forms.TextInput(attrs={'placeholder': Text().cpf(),
'icone': 'fa fa-credit-card',
'id':'cpf',
}),
'telefone': forms.TextInput(attrs={'placeholder': Text().telefone(),
'icone': 'fa fa-phone'.decode('utf-8'),
'id': Text().telefone()}),
'celular': forms.TextInput(attrs={'placeholder': Text().celular(),
'icone': 'fa fa-mobile',
'id': Text().celular()}),
}
가 나는 점을 제거하기 위해 필드 CPF를 변경하고 싶습니다. 그 후에 필드를 다시 확인하려고합니다. 가능한가?
또한 self.data [ 'cpf'] 값을 수신 할 수 없습니다. 이 QueryDict 인스턴스는 불변입니다.
clean_cpf 메소드를 만들었지 만 결코 호출되지 않습니다. 나는 cpf 필드가 cleaned_data에 나타나지 않기 때문에 데이터를받는 형식이 유효하지 않기 때문에 나는 생각한다.
또한 cpf는 cleaned_data에 없습니다. 나는 무효라고 생각합니다. cpf의 최대 길이는 11이지만 화면에서 오는 경우 필드의 길이는 14 자입니다. 이 때문에 필드를 변경하고 다시 유효성을 검사해야합니다.
QueryDict 인스턴스가 다른 값으로 재 할당되기 전에 변경 될 때'self.data._mutable = True'를 시도한 다음 'self.data ['cpf '] = re.sub ("[\ .-] "," ", self.data [ 'cpf']). –
@ArpitGoyal'QueryDict._mutable'은 보호 된 속성입니다. 당신이하고있는 것을 정말로 알지 못하는 한, 다른 감각적 인 해결책이 없습니다. 이 경우 변경 가능한 QueryDict를 얻기 위해 _documented_ 올바른 방법이 있습니다 : "변경 가능한 버전을 얻으려면 QueryDict.copy()"를 사용해야합니다. –
@DiegoMartins : 연결된 질문으로 문제가 해결되지 않으면 설명을 게시하십시오 왜 - 어쩌면 당신은 사용자 정의 FormField 필요하거나 어쩌면 당신이 더 나은 정규 표현식과 일치하는 점으로 구분 된 값을 받아 들여야합니다 ... –