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 

Reply via email to