2012-02-26 58 views
2

我添加了一个新表,我的web2py应用程序:新表无法识别

db.define_table('users', 
    db.Field('name', 'string'), 
    db.Field('password', 'password'), 
    db.Field('reputation', 'integer', default=0), 
    db.Field('joined', 'datetime', default=datetime.utcnow()) 
) 

而且一个旧表中的字段引用它:

db.Field('user', db.users), 

但是,这是给我一个KeyError以下回溯:

Traceback (most recent call last): 
    File "E:\Programming\Python\web2py\gluon\restricted.py", line 204, in restricted 
    exec ccode in environment 
    File "E:/Programming/Python/web2py/applications/vote_up/models/db.py", line 85, in <module> 
    db.Field('user', db.users), 
    File "E:\Programming\Python\web2py\gluon\dal.py", line 5119, in __getattr__ 
    return self[key] 
    File "E:\Programming\Python\web2py\gluon\dal.py", line 5113, in __getitem__ 
    return dict.__getitem__(self, str(key)) 
KeyError: 'users' 

我该如何解决这个问题?

回答

2

“用户”表具有之前定义:

db.Field('user', db.users) 

否则,db.users还不在它是在代码中引用上面的点存在。另一种选择是:

db.Field('user', 'reference users') 

它不需要定义“用户”表。

+0

:D我有多愚蠢。我并没有将'define_table'看作python方法,而是将其视为一种神秘的Web2Py结构,就像我在PHP日期间用来查看MySQL查询:D。再次感谢@安东尼。 – Sathvik 2012-02-26 14:29:12