2012-04-08 1 views
3

私はweb2pyのCRUD.create()フィールド表現

<input id='table_yourref' name='yourref' value=''/> 

は、私はこの

ようにそれを表示したいHTMLにおけるINPUTとして示されている例

Field('yourref', type='string', 
      label=T('Your reference')), 

ため、このフィールドを持っています

<input id='table_yourref' name='yourref' value=''/> 
<a onclick='add()'>Add</a> 
<a onclick='remove()'>Remove</a> 

add()remove()は、フィールドを追加または削除するjQueryの関数であり

答えて

2

最善の方法はcustom widgetを作成するために、おそらくです:

def mywidget(field, value): 
    return CAT(INPUT(_name=field.name, 
        _id='%s_%s' % (field._tablename, field.name), 
        _class=field.type, 
        _value=value, requires=field.requires), 
       A('Add', _onclick='add()'), 
       A('Remove', _onclick='remove()')) 
... 

Field('yourref', type='string', label=T('Your reference'), 
     widget=mywidget) 

あなたはまた、それが作成された後、フォームにリンクを挿入するためにserver-side DOMを使用することができます。

form = crud.create(db.mytable) 
form.element('#mytable_myfield__row .w2p_fw').append(A('Add', _onclick='add()')) 
form.element('#mytable_myfield__row .w2p_fw').append(A('Remove', _onclick='remove()')) 

の利点をカスタムウィジェットは、db.mytableに基づいて作成されたすべてのフォームに適用されますが、DOMメソッドは各フォームに個別に適用する必要があります。