У меня есть приложение Python на основе Pylons и Jinja2. Существует виджет:@ 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='')
Упомянутый SchemaNode является элементом в форме. После перезагрузки приложения я нажимаю на строку данных для отображения подробных данных. Форма отображается правильно, и виджет показывает правильные данные (дважды используемые в этой форме - как правильные, так и разные). Когда я вернусь в список и нажмите другую строку данных, виджет отобразит те же данные, что и для первой строки, которую я щелкнул. Он ведет себя так, пока я не перезапущу приложение.
Вопрос: Является ли @ colander.deferred (или, может быть, еще что-то еще), чтобы виджет вел себя так? К сожалению, это не мой код, но мне нужно выяснить, почему он не отображает правильные данные и не зациклился на первых начальных значениях.
Благодарим вас за все предложения.