class ClienteTelefone(models.Model):
numero = models.CharField(max_length=11, blank=False, verbose_name=u'Número')
descricao = models.CharField(blank=True, max_length=150, verbose_name=u'Descrição')
observacao = models.CharField(blank=True, max_length=300, verbose_name=u'Observação')
pessoa = models.ForeignKey(Cliente, related_name="telefones")
def __str__(self):
#desta forma atende tanto número com 8 quanto com 9 dígitos
return "({}){}-{}".format(self.numero[:2], self.numero[2:-4], self.numero[-4:])class ClienteTelefoneForm(forms.ModelForm):
required_css_class = 'required'
class Meta:
model = ClienteTelefone
exclude = ('pessoa',)
widgets = {
'observacao': Textarea(attrs={
'rows':5
}),
'numero': TextInput(attrs={
'class':'telefone-mask'
}),
}var SPMaskBehavior = function(val) {
return val.replace(/\D/g, '').length === 11 ? '(00) 00000-0000'
: '(00) 0000-00009';
}, spOptions = {
onKeyPress : function(val, e, field, options) {
field.mask(SPMaskBehavior.apply({}, arguments), options);
},
placeholder : "(__) _____-____"
};
$('.telefone-mask').mask(SPMaskBehavior, spOptions);--
Você recebeu essa mensagem porque está inscrito no grupo "Django Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para django-brasi...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.
Você pode aumentar o tamanho do field para 15 e salvar no banco com a máscara ou você pode criar um método no form para remove a máscara, dando replace nos parênteses e no hífen, e fazer as validações que deseja no form, ou pode usar JS para remover a máscara antes de fazer o post como o Vitor disse.
function remover_mascaras(form){
$(form).find(':input[class*="-mask"]').unmask();
}onsubmit="remover_mascaras(this)"