我创建了一个多表格
form = SQLFORM.factury(db.table1,db.table2)
db.table2
包含以下字段,字段invoice_id
与db.table1
相关联,catalogue_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)
发送表单后,应自动从web2py填充invoice_id
并获取ID
数据的sent
但有这个
Field('invoice_id', db.table1, ... )
使字段在提交之前必须具有值
答案 0 :(得分:1)
参见示例here。在这种情况下,例如:
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。