'Validates every value in the given list. A value is validated against
the corresponding Field in self.fields.
For example, if this MultiValueField was instantiated with
fields=(DateField(), TimeField()), clean() would call
DateField.clean(value[0]) and TimeField.clean(value[1]).'

def clean(self, value):

    clean_data = []
    errors = ErrorList()
    if ((not value) or isinstance(value, (list, tuple))):
        if ((not value) or (not [v for v in value if (v not in validators.EMPTY_VALUES)])):
            if self.required:
                raise ValidationError(self.error_messages[u'required'])
            else:
                return self.compress([])
    else:
        raise ValidationError(self.error_messages[u'invalid'])
    for (i, field) in enumerate(self.fields):
        try:
            field_value = value[i]
        except IndexError:
            field_value = None
        if (self.required and (field_value in validators.EMPTY_VALUES)):
            raise ValidationError(self.error_messages[u'required'])
        try:
            clean_data.append(field.clean(field_value))
        except ValidationError as e:
            errors.extend(e.messages)
    if errors:
        raise ValidationError(errors)
    out = self.compress(clean_data)
    self.validate(out)
    self.run_validators(out)
    return out
