在定义之前引用 web2py 中的表 [英] Referencing a table in web2py before defining it

查看:26
本文介绍了在定义之前引用 web2py 中的表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的代码如下,我试图为员工分配一个部门,并在部门表中创建一个经理

My code is the following im trying to assign a department to employees and also create a manager in a department table

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 = DAL(lazy_tables=True),你应该没问题.

If you remove the 2nd db = DAL(lazy_tables=True), you should be fine.

您遇到的问题是您通过在第一个表定义(员工)之后再次声明/实例化它基本上覆盖了第一个 db 对象.

The problem you have is that you essentially overwrote the first db object by declaring/instantiating it again after the first table definition (employee).

这为您提供了一个新的 db 对象(未定义表),您可以在其中定义一个表(部门),该表(部门)引用另一个不再存在的表(员工).

This gives you a new db object (with no tables defined) in which you define a table (department) that references another table (employee) that no longer exists.

这篇关于在定义之前引用 web2py 中的表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆