Hey everyone, have a multivaluefield to gather a US phone number with
an optional extension.  It looks great on the form, however during the
form preview it looks pretty ugly.  In the database the number gets
stored as 555 555 5555 x5555 however in the form preview it looks like
this:   [u'555', u'555', u'5555', u'5555'].  How can I pretty the
output in the preview form?  Any help would be appreciated.

In my model in models.py I define these two fields:
    telephone_number = models.CharField(blank=True, max_length=34,
help_text="The person's telephone number.")
    confirm_telephone_number = models.CharField(blank=True,
max_length=34)

I define the following widget and field:
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'}),\
                forms.TextInput(attrs={'size':'4','maxlength':'4'}))
        super(PhoneNumberWidget, self).__init__(wigs, attrs)

    def decompress(self, value):
        if value:
            return value
        return [None, None, None, None]

    def format_output(self, rendered_widgets):
        return
'('+rendered_widgets[0]+')'+rendered_widgets[1]+'-'+rendered_widgets[2]+'ext'+rendered_widgets[3]

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),
forms.CharField(max_length=4))
        super(PhoneNumberField, self).__init__(fields, *args,
**kwargs)
    def compress(self, data_list):
        if data_list[0] in forms.fields.EMPTY_VALUES or data_list[1]
in forms.fields.EMPTY_VALUES or data_list[2] in
forms.fields.EMPTY_VALUES:
            raise forms.fields.ValidationError(u'Enter valid phone
number')
        if data_list[3] in forms.fields.EMPTY_VALUES:
            return data_list[0]+' '+data_list[1]+' '+data_list[2]
        else:
            return data_list[0]+' '+data_list[1]+' '+data_list[2]+'
x'+data_list[3]

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-us...@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to