I just looked at the code but I cant see how did you solved this, I am having the exact problem on another custom widget.
I want a field where users will put recipe ingredients separated by new lines *The field* Field("ingredients", "list:string", requires=LINE_SEPARATED_LIST(), widget=ListTextWidget.widget) *on form it is* * * <textarea>------------------ Ingredient number 1 Ingredient number 2 ... ... ------------------------------- *To validate that textarea I created this:* class LINE_SEPARATED_LIST(object): def __init__(self, error_message="value %s is invalid", sep="\n"): self.error_message = error_message self.sep = sep def __call__(self, value): items = value.split(self.sep) return ([item.strip().replace("\r","") for item in items], None) *And this widget to create the text area from stored list* class ListTextWidget(FormWidget): _class = 'text' @classmethod def widget(cls, field, value, **attributes): if value: value = "\n".join(value) else: value = '' default = dict(value = value) attr = cls._attributes(field, default, **attributes) return TEXTAREA(**attr) *The problem is that after validation with errors, the text area becomes:* <textarea>------------------------------------------------------ ['Ingredient number 1', 'Ingredient number 2', ...] ------------------------------------------------------------------- --