'Cleans and validates the field values'

def validate(self):

    for (name, col) in self._columns.items():
        v = getattr(self, name)
        if ((v is None) and (not self._values[name].explicit) and col.has_default):
            v = col.get_default()
        val = col.validate(v)
        self._set_column_value(name, val)
