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)

したがって、住所を含む顧客を作成できる1つのフォームを生成できれば、管理ははるかに論理的になります。

ただし、すでにデータベースにあるレコードから選択できると便利ですが、[追加]ボタン(javascriptでロールダウン)を使用すると、フィールドが空の場合にデフォルトで開きます(そうでない必要があります)。 。

このネストされた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 に答える