2016-12-08 4 views
1

У меня есть приложение 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 (или, может быть, еще что-то еще), чтобы виджет вел себя так? К сожалению, это не мой код, но мне нужно выяснить, почему он не отображает правильные данные и не зациклился на первых начальных значениях.

Благодарим вас за все предложения.

ответ

0

Это была ошибка с этой определенной версией Colader. Это заставляло виджет вести себя как одноэлементный.

Смежные вопросы