I would use an intermediate table to achieve the many to many relationship:
db.define_table('test', Field('name') ) db.define_table('test2', Field('name') ) db.define_table('test_relation', Field('test', 'reference test2'), Field('test2, 'reference test')) test_and_test2 = db((db.test.id==db.test_relation.test) & (db.test2.id==db.test_relation.test2)) for row in test_and_test2.select(): print row.test.name, row.test2.name On May 13, 6:09 am, vihang <vihan...@gmail.com> wrote: > Hi, > > Why am I getting an error here? > > model.py > > db=SQLDB("sqlite://db.db") > > db.define_table('test', > Field('t', 'reference test2')) > > db.define_table('test2', > Field('t1', 'reference test')) > > Error: > > Traceback (most recent call last): > File "c:\web2py\gluon\restricted.py", line 178, in restricted > exec ccode in environment > File "c:/web2py/applications/video/models/db.py", line 6, in > <module> > Field('t', 'reference test2')) > File "c:\web2py\gluon\sql.py", line 1299, in define_table > t._create_references() > File "c:\web2py\gluon\sql.py", line 1571, in _create_references > raise SyntaxError, 'Table: table "%s" does not exist' % referenced > SyntaxError: Table: table "test2" does not exist > > Bummer !