我有一个基于塔架和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是表单的一个元素。在重启应用程序后,我确实点击了一个数据行来显示详细数据。表单被正确呈现,并且小部件显示正确的数据(在此表单中使用了两次-既正确又不同)。当我返回到列表并单击另一个数据行时,小部件显示与我首先单击的行相同的数据。它的行为就像这样,直到我重启应用程序。
问:是不是@colander.deferred (或者其他什么东西)让小部件的行为像这样?不幸的是,这不是我的代码,但我需要找出为什么它不能显示正确的数据,并停留在第一个初始值。
提前感谢您的所有建议。
发布于 2017-04-13 02:07:18
这是一个错误,与这个特定的Colader版本。它迫使小部件表现得像单例一样。
https://stackoverflow.com/questions/41049589
复制相似问题