Note that there are some explanatory texts on larger screens.

plurals
  1. POCombine values from MultiWidget into one field for POST
    primarykey
    data
    text
    <p>I'm using the <a href="https://stackoverflow.com/questions/1777435/django-multiwidget-phone-number-field/1912686#1912686">phone number MultiWidget</a> provided by derek73. Question is: it puts three separate values in the POST - how should I recombine them into one value?</p> <pre><code>class USPhoneNumberMultiWidget(forms.MultiWidget): """ A Widget that splits US Phone number input into three &lt;input type='text'&gt; boxes. """ def __init__(self,attrs=None): widgets = ( forms.TextInput(attrs={'size':'3','maxlength':'3', 'class':'phone'}), forms.TextInput(attrs={'size':'3','maxlength':'3', 'class':'phone'}), forms.TextInput(attrs={'size':'4','maxlength':'4', 'class':'phone'}), ) super(USPhoneNumberMultiWidget, self).__init__(widgets, attrs) def decompress(self, value): if value: return value.split('-') return (None,None,None) def value_from_datadict(self, data, files, name): value = [u'',u'',u''] # look for keys like name_1, get the index from the end # and make a new list for the string replacement values for d in filter(lambda x: x.startswith(name), data): index = int(d[len(name)+1:]) value[index] = data[d] if value[0] == value[1] == value[2] == u'': return None return u'%s-%s-%s' % tuple(value) class UserForm(forms.ModelForm): email = forms.EmailField(max_length=30, widget=forms.TextInput(attrs={"class":"text"})) first_name = forms.CharField(max_length=max_length_for_att(User, 'first_name'), widget=forms.TextInput(attrs={"class":"text"})) last_name = forms.CharField(max_length=max_length_for_att(User, 'last_name'), widget=forms.TextInput(attrs={"class":"text"})) phone = USPhoneNumberField(label="Phone", widget=USPhoneNumberMultiWidget()) class Meta: model = User fields = ('email', 'first_name', 'last_name', 'phone', ) </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload