Quiero crear un campo para la entrada del número de teléfono que tiene 2 campos de texto (tamaño 3, 3 y 4 respectivamente) con los delimitadores comunes "(" ")" "-". A continuación está mi código para el campo y el widget, obtengo el siguiente error al intentar repetir los campos en mi formulario durante la representación inicial (sucede cuando el bucle for llega a mi campo de número de teléfono):Django MultiWidget Número de teléfono campo
Caught una excepción al intentar mostrar: objeto 'NoneType' es unsubscriptable
class PhoneNumberWidget(forms.MultiWidget):
def __init__(self,attrs=None):
wigs = (forms.TextInput(attrs={'size':'3','maxlength':'3'}),\
forms.TextInput(attrs={'size':'3','maxlength':'3'}),\
forms.TextInput(attrs={'size':'4','maxlength':'4'}))
super(PhoneNumberWidget, self).__init__(wigs, attrs)
def decompress(self, value):
return value or None
def format_output(self, rendered_widgets):
return '('+rendered_widgets[0]+')'+rendered_widgets[1]+'-'+rendered_widgets[2]
class PhoneNumberField(forms.MultiValueField):
widget = PhoneNumberWidget
def __init__(self, *args, **kwargs):
fields=(forms.CharField(max_length=3), forms.CharField(max_length=3), forms.CharField(max_length=4))
super(PhoneNumberField, self).__init__(fields, *args, **kwargs)
def compress(self, data_list):
if data_list[0] in fields.EMPTY_VALUES or data_list[1] in fields.EMPTY_VALUES or data_list[2] in fields.EMPTY_VALUES:
raise fields.ValidateError(u'Enter valid phone number')
return data_list[0]+data_list[1]+data_list[2]
class AdvertiserSumbissionForm(ModelForm):
business_phone_number = PhoneNumberField(required=True)
algún motivo usted no está sólo nos utiliza. models.PhoneNumberField y us.forms.USPhoneNumberField? Muy conveniente si tienes números de teléfono de EE. UU. http://docs.djangoproject.com/en/dev/ref/contrib/localflavor/#united-states-of-america-us – hughdbrown
Sería útil saber dónde estaba ocurriendo el rastreo, es decir, proporcionar más detalles que solo eso una línea. –
En referencia a la sugerencia hecha por @hughdbrown, Django-Localflavor se movió en Django 1.5 y ahora reside en https://github.com/django/django-localflavor – davelupt