django radioselect渲染到表

Joh*_*ohn 2 django django-forms django-widget

我想将django表单widget radioselect渲染到表而不是ul列表中.第一行中有标签,第二行下面有单选按钮.每个按钮一个单元格.例如

-------------------------------
| label 1 | label 2 | label 3 |
-------------------------------
|   O     |    O    |    O    |
-------------------------------
Run Code Online (Sandbox Code Playgroud)

我查看了默认的selectradio小部件,但渲染函数看起来很复杂,调用许多不同的类来完成渲染的每个部分.

有没有人有任何如何做到这一点或可以提供简单解决方案的例子?

alb*_*ick 7

只是为了填写BéresBotond的答案

class MyForm(forms.ModelForm):
    my_field = forms.TypedChoiceField(choices=some_choices,
                                      label=u"bla",
                                      widget=forms.RadioSelect(renderer=MyCustomRenderer))
Run Code Online (Sandbox Code Playgroud)

自定义渲染器看起来像:

from django import forms
from django.forms.widgets import RadioFieldRenderer
from django.utils.encoding import force_unicode
from django.utils.safestring import mark_safe

class MyCustomRenderer( RadioFieldRenderer ):
    def render( self ):
        """Outputs a series of <td></td> fields for this set of radio fields."""
        return( mark_safe( u''.join( [ u'<td>%s</td>' % force_unicode(w.tag()) for w in self ] )))
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我不想要它旁边的单选框的名称,所以我使用"force_unicode(w.tag())"如果你想要它旁边的名字,只需直接渲染对象,如"force_unicode( W)"

我希望有所帮助!