2016-12-08 5 views
1

私はPylonsとJinja2をベースにしたPythonアプリケーションを持っています。 ウィジェットあり:それはschemaNodeを用いてデータを表示するために使用される@ colander.deferredウィジェットデータ更新

@colander.deferred 
def deferred_last_results_widget(node, kw): 
""" 
Widget for last results widget 
Empty choice is added to list by default. 

:param node: name of the node 
:param kw: key/value dictionary 
:return: Selectable widget 
""" 
choices = kw.get('choices', dict()).get(node.name) 
value_id = kw.get('choices', dict()).get('value_id') 
without_empty = kw.get('no_empty_value') 
disabled = kw.get('disabled', {}) 
if disabled and node.name in disabled: 
    disabled = 'disabled' 
return LastResultsWidget(values=choices, 
         value_id=value_id, 
         css_class=kw.get('css_class', None), 
         required=False, id=kw.get('select_id'), 
         disabled=disabled, 
         onchange_action=kw.get('onchange_action', None)) 

:schemaNodeを言及

assessments = SchemaNode(String(), widget=deferred_last_results_widget, 
         title='Assessment:', missing='') 

フォームの要素であるが。 アプリを再起動した後、データ行をクリックして詳細なデータを表示します。フォームが正しくレンダリングされ、ウィジェットは正しいデータを表示します(このフォームでは2回使用されます)。リストに戻って別のデータ行をクリックすると、ウィジェットは最初にクリックした行と同じデータを表示します。これは、私がアプリケーションを再起動するまでこれのように動作します。

質問: @ colander.deferred(またはsth else)は、ウィジェットをこのように動作させますか? 残念ながら、それは私のコードではありませんが、なぜそれが正しいデータを表示していないのかを知る必要があり、最初の初期値に固執しました。

ご協力いただきありがとうございます。

答えて

0

この特定のColaderバージョンではエラーです。ウィジェットはシングルトンのような振る舞いを強いられていました。

関連する問題