Ok here's how I did, using SelectMultipleField, but without having to deal with choices :
class MultipleTextField(SelectMultipleField):
"""
No different from a normal select field, except this one can take (and
validate) multiple choices. You'll need to specify the HTML `rows`
attribute to the select field when rendering.
"""
widget = widgets.Select(multiple=True)
coerce = str
choices = []
def pre_validate(self, form):
pass