0

複数フォームを作成しました

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)

フォームが送信された後、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 に答える