我的代码是以下我尝试将部门分配给员工并在部门表中创建经理
db = DAL(lazy_tables=True)
db.define_table('employee',
Field('fullname','string',label='Name'),
Field('email','string'),
Field('phone','string'),
Field('kids', 'string'),
Field('phone', 'string'),
#Field('date','datetime'),
Field('dob', 'datetime', label='Date'),
Field('department', 'reference department',
requires=IS_IN_DB(db, db.department.id, '%(department_name)s')),
auth.signature,
format='%(fullname)s'
)
db = DAL(lazy_tables=True)
db.define_table('department',
Field('department_name', 'string', label='Department Name'),
# Field('department_name', 'string', label='Department Name'),
Field('manager', 'reference employee', required='true',
requires=IS_IN_DB(db, db.employee.id, '%(fullname)s')),
auth.signature,
format='%(department_name)s'
)
答案 0 :(得分:1)
url
在上面一行中,您引用了 Field('department', 'reference department',
requires=IS_IN_DB(db, db.department.id, '%(department_name)s')),
,但尚未定义db.department.id
表,因此department
对象还没有db
属性。
您应该能够使用这种替代语法:
department
或者,您可以在定义IS_IN_DB(db, 'department.id', '%(department_name)s')
表后定义requires
属性:
department
答案 1 :(得分:1)
如果删除第二个db = DAL(lazy_tables=True)
,则应该没问题。
您遇到的问题是,您通过在第一个表定义(employee)之后再次声明/实例化它来基本上覆盖第一个db对象。
这为您提供了一个新的db对象(没有定义表),您可以在其中定义一个引用另一个不再存在的表(employee)的表(department)。