@ colander.deferred小部件数据更新

时间:2016-12-08 21:59:40

标签: python widget deferred colander

我有一个基于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的一个元素。 重新启动应用程序后,我会单击数据行以显示详细数据。表单正确呈现,窗口小部件显示正确的数据(在此表单中使用两次 - 正确和不同)。当我回到列表并单击另一个数据行时,窗口小部件显示的数据与我首先单击的行相同。在我重新启动应用程序之前,它的行为就像这样。

问题: 是@colander.deferred(或者可能是其他的)使小部件表现得像这样吗? 不幸的是,这不是我的代码,但我需要找出为什么它没有显示正确的数据并且坚持第一个初始值。

提前感谢您提出的所有建议。

1 个答案:

答案 0 :(得分:0)

这个某个Colader版本出现了错误。它迫使小部件表现得像单身一样。