Ich möchte ein Feld für Telefonnummer Eingabe erstellen, die 2 Textfelder (Größe 3, 3 und 4) mit den gemeinsamen "(" ")" "-" Trennzeichen hat. Unten ist mein Code für das Feld und das Widget, ich bekomme den folgenden Fehler beim Versuch, die Felder in meinem Formular beim ersten Rendern zu wiederholen (es passiert, wenn die for-Schleife zu meinem Telefonnummernfeld gelangt):Django MultiWidget Telefonnummer Feld
Gefangen eine Ausnahme beim Rendern: ‚NoneType‘ Objekt ist 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)
Gibt es Gründe, Sie sind nicht nur uns mit. models.PhoneNumberField und us.forms.USPhoneNumberField? Sehr praktisch, wenn Sie US-Telefonnummern haben. http://docs.djangoproject.com/en/dev/ref/contrib/localflavor/#united-states-of-america-us – hughdbrown
Es wäre nützlich zu wissen, wo das Traceback stattgefunden hat - dh, geben Sie mehr Details als nur das eine Linie. –
In Bezug auf den Vorschlag von @hughdbrown gemacht Django-Localflavor wurde in Django 1.5 ausgezogen es liegt jetzt bei https://github.com/django/django-localflavor – davelupt