Ok, SQLITE does not allow it, so you can try a different approach. Remove the unique and the notnull
*Field('unikey'', compute=lambda row: "%(user)d_%(location)s" % row)
add a validator.
db.site.unikey.requires = [IS_NOT_EMPTY(), IS_NOT_IN_DB(db, ' site.unikey')]
*
--

