'Process form and create DB objects as required'

def save(self, request, contact_type=None):

    if self.instance:
        contact = self.instance
    else:
        contact = Contact()
        contact.contact_type = contact_type
    contact.name = unicode(self.cleaned_data['name'])
    if ('parent' in self.cleaned_data):
        contact.parent = self.cleaned_data['parent']
    if ('related_user' in self.cleaned_data):
        contact.related_user = self.cleaned_data['related_user']
    contact.save()
    if self.instance:
        contact.contactvalue_set.all().delete()
    for field in contact.contact_type.fields.all():
        for form_name in self.cleaned_data:
            if re.match(str((('^' + field.name) + '___\\d+$')), form_name):
                if isinstance(self.fields[form_name], forms.FileField):
                    value = ContactValue(field=field, contact=contact, value=self._handle_uploaded_file(form_name))
                    if isinstance(self.fields[form_name], forms.ImageField):
                        self._image_resize(value.value)
                elif ((field.field_type == 'picture') and isinstance(self.fields[form_name], forms.ChoiceField)):
                    if (self.cleaned_data[form_name] != 'delete'):
                        value = ContactValue(field=field, contact=contact, value=self.cleaned_data[form_name])
                else:
                    value = ContactValue(field=field, contact=contact, value=self.cleaned_data[form_name])
                value.save()
    return contact
