0

我创建了一个多重表格

form = SQLFORM.factury(db.table1,db.table2)

db.table2具有以下字段,该字段invoice_id链接到db.table1并且 acatalogue_id链接到另一个表db.table0

db.define_table('table2',
    Field('id','id'),
    Field('user_id', db.auth_user, default=auth.user_id, writable=False,readable=False,
          label=T('User Id')),
    Field('invoice_id', db.table1,  writable=False,readable=False,
          label=T('Invoice')), 
    Field('catalogue_id', db.table0,
          label=T('Catalogue')),
    format='%(thiscatalogue)s',
    migrate=settings.migrate)

发送表单后,应从invoice_idweb2py 自动填写并获取数据IDsent

但是有了这个

Field('invoice_id', db.table1, ... )

使字段在提交之前必须有一个值

4

1 回答 1

1

请参阅此处的示例。在这种情况下,类似于:

form = SQLFORM.factory(db.table1, db.table2)
if form.process().accepted:
    invoice_id = db.table.insert(**db.table1._filter_fields(form.vars))
    form.vars.invoice_id = invoice_id
    db.table2.insert(**db.table2._filter_fields(form.vars))

首先将新发票插入到 table1 中,它返回新记录的 id。然后,在插入 table2 之前,将 form.vars.invoice_id 设置为新发票记录的 id。

于 2012-04-21T18:23:14.467 回答