Skip to content

Instantly share code, notes, and snippets.

@mailarchis
Created July 31, 2010 07:02
Show Gist options
  • Save mailarchis/501863 to your computer and use it in GitHub Desktop.
Save mailarchis/501863 to your computer and use it in GitHub Desktop.
class NameWidget(forms.MultiWidget):
"""
Custom widget for Custom Field Name Field
"""
def __init__(self):
widgets = (
forms.TextInput(attrs={}),
forms.TextInput(attrs={}),
forms.TextInput(attrs={})
)
super(NameWidget, self).__init__(widgets)
def decompress(self, value):
if value:
return value
return [None,None,None]
def format_output(self,rendered_widgets):
"""
Customize widget rendering
"""
widget_context = {'first_name':rendered_widgets[0],'middle_name':rendered_widgets[1],'last_name':rendered_widgets[2]}
return render_to_string('forms/namefield.html',widget_context)
class NameField(forms.MultiValueField):
"""
Custom field to take user inputs of name
"""
widget = NameWidget()
def __init__(self):
fields = (
forms.CharField(label=_('First Name'), max_length=50),
forms.CharField(label=_('Middle Name'), max_length=50),
forms.CharField(label=_('Last Name'), max_length=50)
)
super(NameField, self).__init__(fields, required=False)
def compress(self, data_list):
if data_list:
return data_list
return None
def clean(self, value, initial=None):
value = super(NameField, self).clean(value)
return value
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment