2017-09-26 86 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已被刪除???