1

Pylons と Jinja2 に基づく Python アプリがあります。ウィジェットがあります:

@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='')

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

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

すべての提案を前もってありがとう。

4

1 に答える 1