您好,我有一个带有ChoiceField的表单,其小部件设置为RadioSelect

现在要覆盖默认的html输出,需要像下面这样对RadioFieldRenderer进行子类化:

class SimpleRadioFieldRenderer(forms.widgets.RadioFieldRenderer):

    def render(self):
        """Outputs widget without <ul> or <li> tags."""
        return mark_safe(u'\n'.join([u'%s'
                % force_unicode(w.tag()) for w in self]))


现在一切都很好,除了我希望能够一次从模板渲染1个单选按钮。
像这样:

{{ form.myfield.0 }}}


或者也许将其挂在小部件本身上:

{{ form.myfield.field.widget.0 }}


让我感到烦恼的是,RadioFieldRenderer已经实现了__get_item__来仅获取一个RadioInput。问题在于渲染器不包含数据,窗口小部件也不包含数据。我真的很讨厌把Field和BoundField弄乱。

我需要在每个单选按钮之前/之后插入html,我希望可以在模板中完成。从代码中将很容易。

任何想法都欢迎。

最佳答案

我认为django-users中的这篇文章可能提供了一种方法(使用表单类中的访问器函数):
http://groups.google.com/group/django-users/msg/b60410692c7c60e2

08-25 18:35