2017-08-17 1 views
2

ULなしのラジオボタングループをレンダリングする必要があります。 Django 1.9ではthis answerを使用していましたが、これを多くの場所で使用しています。私はDjango 1.11にアップグレードしており、RadioFieldRendererno longer supportedです。 Django 1.11で私が今やっていることをどのように達成できますか?DjangoでULなしのラジオボタンをレンダリングする1.11

これは、私はあなたがすでにあなたのフォームを保存form.pyを、持っていると思いdirkgrotenの答え

{% with id=widget.attrs.id %} 
{% for group, options, index in widget.optgroups %} 
    {% for option in options %} 
     {% include option.template_name with widget=option %} 
    {% endfor %} 
{% endfor %} 
{% endwith %} 

答えて

3

Django 1.11では、ウィジェットの定義方法が大きく変更されました。しかし、それはより簡単にカスタマイズすることができます。 RadioSelectウィジェットはmultiple_input.htmlテンプレートを使用します。

  • サブクラスRadioSelect独自のテンプレートを使用する:あなた自身に

    class MyRadioSelect(RadioSelect): 
        template_name = 'my_widgets/radio.html' 
    
  • コピーmultiple_input.html(つまり、標準Djangoテンプレートだ)コードを<ul>を削除するというあなたの最良のオプションは、次の操作を行うことですテンプレート( "my_widgets/radio.html")を使用して、必要なものをすべて調整します。 <ul><li>の代わりに<div>を使用することもできます。フォームで

  • 、独自のウィジェットを使用します。

    options = ChoiceField(widget=MyRadioSelect) 
    
+0

をおかげで、Djangoの1.11に変更さそう多くのものがあります。ちなみに、[multiple_input.html](https://github.com/django/django/blob/1.11.4/django/forms/templates/django/forms/widgets/multiple_input.html)のコードは難しかったです読む。 – user2233706

0

あたりのように私は私のテンプレートでやってしまったものです。あなたはラジオボタンとしてレンダリングするそれぞれのフォームとフィールドに

、このようにそれを作る:

choices_field = forms.ChoiceField(
    widget=forms.RadioSelect(attrs={'class': 'some-class-here'}) 
) 

重要なのはどちらかChoiceFieldModelChoiceFieldなどで、RadioSelectウィジェットを使用することです

関連する問題