0

从逻辑的角度来看,有时它是没有意义的,例如,在添加客户之前添加地址。

db.define_table('address',
   Field('line1','string', required=True),
   Field('line2','string'),
   Field('suburb','string', required=True),
   Field('post_code','integer'),
   Field('email','string')
)

db.address.post_code.requires = IS_INT_IN_RANGE(0000, 9999)
db.address.email.requires     = IS_EMAIL()

db.define_table('customer',
   Field('name', 'string', required=True, unique=True),
   Field('locations', 'list:reference db.address', required=True),
   Field('comment', 'string')
) # quick aside: how would I ensure there isn't another customer with same name+location?

db.address.requires = IS_IN_DB(db, db.address, '%(line1)s' + ', ' + '%(suburb)s', multiple=True)

因此,如果我可以生成一种允许您创建客户的表格,并附上地址,那么管理将变得更加合乎逻辑。

但是,能够从数据库中已经存在的记录中进行选择仍然很有用,但是只有一个“添加”按钮——使用 javascript 向下滚动——如果字段为空,它将默认打开(并且 .requires 不是) .

我将如何生成这个嵌套的 CRUD?

感谢所有建议

4

1 回答 1

0

我相信官方书中的这个主题在某种程度上涵盖了它:

http://web2py.com/books/default/chapter/29/7#One-form-for-multiple-tables

基本上,您必须使用 sqlform.factory。您的控制器将首先调用地址上的插入,然后获取地址的 ID,然后使用该 ID 调用客户上的插入。

不幸的是,这可以处理您的添加,但不能处理下拉列表。就这一点而言,您需要编写自己的 html。没有自动 CRUD。

于 2012-05-15T19:34:04.457 回答