2012-05-14 81 views
0

從邏輯的角度來看,它有時候沒有任何意義,例如,在添加客戶之前添加地址。生成嵌套的CRUD表格

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) 

所以,如果我能產生一種形式,它允許你創建一個客戶,完整的地址,管理將變得更加合理。

但是,如果能夠從db中已有的記錄中選擇,但只需要添加一個「添加」按鈕 - 使用javascript滾動 - 如果字段爲空(和.requires將默認打開不是)。

我該如何生成這個嵌套的CRUD?

感謝所有的建議

回答

0

我認爲,這個話題在官方本書涵蓋它有點:

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

基本上,你必須使用sqlform.factory。您的控制器將首先調用地址上的插入,然後獲取該地址的ID,然後使用該ID,調用客戶上的插入。

不幸的是,它會處理你的增加,但不是一個下拉菜單。就這一點而言,您需要編寫自己的html。沒有自動CRUD。