db=DAL('mysql://root:test1234...@localhost/new')
db.define_table('dogs',
Field('id'),
Field('teamname'),primarykey=['teamname'],migrate=True
)
db.define_table('users',
Field('name'),
Field('team',db.dogs)
)
db.users.name.requires = IS_NOT_EMPTY()
db.users.team.requires = IS_IN_DB(db, 'dogs.teamname', '%(dogs.teamname)')
sql.log
timestamp: 2010-12-20T22:39:05.866199
CREATE TABLE dogs(
teamname VARCHAR(100) NOT NULL,
PRIMARY KEY(teamname)) ENGINE=InnoDB CHARACTER SET utf8;
success!
timestamp: 2010-12-20T22:39:05.968109
CREATE TABLE users(
id INT AUTO_INCREMENT NOT NULL,
name VARCHAR(100),
team VARCHAR(100), INDEX team__idx (team), FOREIGN KEY (team) REFERENCES
dogs(teamname),
PRIMARY KEY(id)
) ENGINE=InnoDB CHARACTER SET utf8;
success!
def index():
form=SQLFORM(db.users)
if form.accepts(request,session):
response.flash='new record inserted'
records=SQLTABLE(db().select(db.users.ALL))
return dict(form=form,records=records)
I am able to create fk now with string,but if i insert any values into dogs
table and refersh the page it throws error
error :
Traceback (most recent call last):
File "/home/sushanth/Desktop/web2py/gluon/restricted.py", line 188, in
restricted
exec ccode in environment
File
"/home/sushanth/Desktop/web2py/applications/welcome/controllers/default.py"
<http://127.0.0.1:8000/admin/default/edit/welcome/controllers/default.py>, line
64, in <module>
File "/home/sushanth/Desktop/web2py/gluon/globals.py", line 95, in <lambda>
self._caller = lambda f: f()
File
"/home/sushanth/Desktop/web2py/applications/welcome/controllers/default.py"
<http://127.0.0.1:8000/admin/default/edit/welcome/controllers/default.py>, line
12, in index
form=SQLFORM(db.users)
File "/home/sushanth/Desktop/web2py/gluon/sqlhtml.py", line 792, in __init__
inp = self.widgets.options.widget(field, default)
File "/home/sushanth/Desktop/web2py/gluon/sqlhtml.py", line 205, in widget
options = requires[0].options()
File "/home/sushanth/Desktop/web2py/gluon/validators.py", line 424, in options
self.build_set()
File "/home/sushanth/Desktop/web2py/gluon/validators.py", line 419, in
build_set
self.labels = [self.label % dict(r) for r in records]
KeyError: 'dogs.teamname'
I think there is an issue with new dal.py with pymsql.
can you please help me on this.
Thanks
sushanth