Python 在定义web2py中的表之前引用该表
我的代码如下:我试图为员工分配一个部门,并在部门表中创建一个经理Python 在定义web2py中的表之前引用该表,python,web2py,Python,Web2py,我的代码如下:我试图为员工分配一个部门,并在部门表中创建一个经理 db = DAL(lazy_tables=True) db.define_table('employee', Field('fullname','string',label='Name'), Field('email','string'), Field('phone','string'), Field('kids', 'string')
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'
)
在上行中,您引用了db.department.id
,但尚未定义department
表,因此db
对象将没有department
属性
相反,您应该能够使用以下替代语法:
IS_IN_DB(db, 'department.id', '%(department_name)s')
或者,您可以在定义部门
表后定义requires
属性:
db.employee.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
属性:
db.employee.department.requires = IS_IN_DB(db, db.department.id, '%(department_name)s')
如果删除第二个
db=DAL(lazy\u tables=True)
,您应该不会有问题
您所遇到的问题是,通过在第一个表定义(employee)之后再次声明/实例化第一个db对象,您实际上重写了第一个db对象
这将为您提供一个新的db对象(未定义表),您可以在其中定义一个引用另一个不再存在的表(员工)的表(部门)。如果删除第二个
db=DAL(lazy\u tables=True)
,您应该不会有问题
您所遇到的问题是,通过在第一个表定义(employee)之后再次声明/实例化第一个db对象,您实际上重写了第一个db对象
这将为您提供一个新的db对象(未定义表),您可以在其中定义一个表(部门),该表引用另一个不再存在的表(员工)。AttributeError:“DAL”对象在执行此操作后没有属性“employee”,我认为问题不是requires属性,因为我已将其删除并出现另一个错误;添加“”后,我得到了值错误:基于您在Google组中的相关帖子,有太多的值无法解包,您在代码中引入了两个新错误(在您上面的问题中未显示),因此,这里很难回答这个问题。AttributeError:“DAL”对象在执行此操作后没有属性“employee”,我认为问题不是requires属性,因为我删除了它,并出现了另一个错误;添加“”后,我得到了值错误:基于您在Google组中的相关帖子,有太多的值无法解压,您在代码中引入了两个新错误(上面的问题中没有显示),因此这里很难回答。