Do not use unique=True. Instead look at using the IS_NOT_IN_DB validator with a set which includes both rows. See the book:
http://www.web2py.com/book/default/chapter/07#Database-Validators On Feb 19, 10:44 pm, Ross Peoples <[email protected]> wrote: > I ran across this problem a little bit ago and can't seem to solve it. > I have two tables similar to this: > > db.define_table('site', > Field('site_name', length=255), > format='%(site_name)s' > ) > > db.define_table('content', > Field('site', db.site, unique=True), > Field('slug', length=80, requires=IS_SLUG(check=True), > unique=True) > ) > > The idea being that no site can have more than one of the same slug, > yet each site could have the same slug. Take this for example: > > This should work: > site = 1, slug = 'test' > site = 2, slug = 'test' > > This should fail: > site 1, slug = 'test' > site 1, slug = 'test' > > However, when the table definition was created, only the slug field > was marked as unique in MySQL. This makes the section that says "This > should work" actually fail and generate a ticket with the following > text: Duplicate entry 'test' for key 'slug' > > Is this a bug or am I not doing this right? I thought I could put > unique=True on multiple fields.

