2017-09-26 91 views
0

这种方法是非常有用的渲染MultiWidget在Django 1.9:迁移的Django 1.9至1.11:forms.MultiWidget.format_output消失

format_output(rendered_widgets) 

我使用它在很多地方,这里使用的例子:

def format_output(self, rendered_widgets): 
    items = [ '%s %s' % (rendered_widgets[i], f) 
          for (i,f) in enumerate(self.fieldnames) ] 
    if self.aligned: 
     return '<li>' + '</li><li>'.join(items) + '</li>' 
    else: 
     return ' '.join(items) 

它在Django 1.11中消失了,我没有找到自然的替代品。 render方法似乎是唯一的选择,但我不明白如何正确使用它。

有没有人有想法?

回答

0

我发现这个解决方案,似乎工作:

#~ def format_output(self, rendered_widgets): 
def render(self, name, value, attrs=None, renderer=None): 
    if not value: 
     value = [ False for x in self.fieldnames ] 
    rendered_widgets = [ x.render(name, value[i]) for i,x in enumerate(self.widgets) ] 
    ... # rest is the same 

编辑:

其实,不,这是行不通的。该rendered_widgets计算必须是:

rendered_widgets = [ x.render('%s_%d' % (name,i), value[i]) for i,x in enumerate(self.widgets) ] 

我花了太多的时间在这个问题上,这是一个related post但为什么format_output已被删除???