Je souhaite créer un champ pour l'entrée du numéro de téléphone comportant 2 champs de texte (taille 3, 3 et 4 respectivement) avec les délimiteurs communs "(" ")" "-. Ci-dessous est mon code pour le champ et le widget, j'obtiens l'erreur suivante en essayant d'itérer les champs dans mon formulaire pendant le rendu initial (cela arrive quand la boucle for arrive à mon champ de numéro de téléphone):Champ de numéro de téléphone Django MultiWidget
une exception tout en rendant: objet « NoneType » est 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)
une raison quelconque vous n'êtes pas seulement nous utiliser. models.PhoneNumberField et us.forms.USPhoneNumberField? Très pratique si vous avez des numéros d'ophone américains. http://docs.djangoproject.com/fr/dev/ref/contrib/localflavor/#united-states-of-america-us – hughdbrown
Il serait utile de savoir où le retraçage se produisait - c.-à-d. donner plus de détails que cela une ligne. –
En référence à la suggestion faite par @hughdbrown Django-Localflavor a été déplacé dans Django 1.5 il réside maintenant à https://github.com/django/django-localflavor – davelupt