I'll take number 2. :) Looks much cleaner to me! I new about number 1 but was hoping to see something that sat in the model. Thanks. BR, Jason Brower
On Sun, Dec 30, 2012 at 8:16 AM, Bruno Rocha <rochacbr...@gmail.com> wrote: can see two options. 1. Use form validation: def check_user(form): query = db.site.user == form.vars.user query &= db.site.location == form.vars.location if db(query).count(): form.errors.user = "already exists" def action(): form = SQLFORM(db.site) if form.process(onvalidation=check_user).accepted: # do whathever 2. Create a computed Uni-Key db.define_table('site', Field('location', 'string'), Field('user', db.auth_user, readable=False, writable=False), Field('typos', 'blob', readable=False, writable=False, default=None), Field('status', 'string', readable=False, writable=False, default='pending'), Field('last_scan', 'datetime', readable=False, writable=False, default=None), Field('unikey' , unique=True, notnull=True, compute=lambda row: "%(user)d_%(location)s" % row ) On Sun, Dec 30, 2012 at 4:06 AM, encompass <encomp...@gmail.com> wrote: I have this in my model. db.define_table('site', Field('location', 'string'), Field('user', db.auth_user, readable=False, writable=False), Field('typos', 'blob', readable=False, writable=False, default=None), Field('status', 'string', readable=False, writable=False, default='pending'), Field('last_scan', 'datetime', readable=False, writable=False, default=None) ) db.site.status.requires = IS_IN_SET(['pending', 'working', 'done']) db.site.location.requires = IS_URL() I want it so that it validates that the combination of db.site.user and db.site.location are a unique value. How do I do that in web2py? I assume there is a way to do this in the model file and now in a controller with checks before insert. BR, Jason -- -- --