'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)
    super(TypedMultipleChoiceField, self).validate(value)
    if ((value == self.empty_value) or (value in validators.EMPTY_VALUES)):
        return self.empty_value
    new_value = []
    is_valid = super(TypedMultipleChoiceField, self).valid_value
    for choice in value:
        if (self.coerce_only and (not is_valid(choice))):
            continue
        try:
            new_value.append(self.coerce(choice))
        except (ValueError, TypeError, ValidationError):
            raise ValidationError((self.error_messages['invalid_choice'] % {'value': choice}))
    return new_value
