I think the easiest is to add your validation code in the controller and then process the data after successful validation. I don't know how your data looks like but here is a simple example of a controller code with custom validation and db insert:
def validate_add(form): pattern = re.compile("[0-9a-z]+") for line in form.vars.data: if not pattern.match(line): form.errors.data = "only alphanumeric characters are accepted" def add(): form = SQLFORM.factory( Field("data", "text", label="names", comment="list of names (1 per line)"), submit_button="Add to library") if form.process(session=None, onvalidation=validate_add).accepted: for name in form.vars.data.split(): id = db.my_table.insert(name=name) redirect(URL("status")) return {"form":form}