'Validates that the values are in self.choices and can be coerced to the
right type.'

def to_python(self, value):

    value = super(TypedMultipleChoiceField, self).to_python(value)
    if ((value == self.empty_value) or (value in self.empty_values)):
        return self.empty_value
    new_value = []
    for choice in value:
        try:
            new_value.append(self.coerce(choice))
        except (ValueError, TypeError, ValidationError):
            raise ValidationError(self.error_messages[u'invalid_choice'], code=u'invalid_choice', params={u'value': choice})
    return new_value
