3

こんにちは、ウィジェットが RadioSelect に設定されている ChoiceField のフォームがあります。

デフォルトの 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__1 つの RadioInput を取得するように実装されていることは、私を悩ませています。問題は、レンダラーにもウィジェットにもデータが含まれていないことです。そして、Field と BoundField をいじるのは本当に嫌です。

各ラジオボタンの前後にhtmlを挿入するにはこれが必要で、テンプレートで実行したいと思います。コードからは簡単です。

どんなアイデアでも大歓迎です。

4

1 に答える 1

0

django-users のこの投稿は、(フォーム クラスのアクセサ関数を使用して) それを行う方法を提供すると思います: http://groups.google.com/group/django-users/msg/b60410692c7c60e2

于 2010-02-05T11:59:12.403 に答える