3

このようなグリッドでフォームを作りたいです:

グリッドの質問

私がこれを行う方法を知っていますか?そのためのDjangoフォームウィジェットはありますか?

実際には、同じ選択肢リストがグリッドにラジオとして表示されている質問です。

ありがとう、

ナティム

4

2 に答える 2

4

これは、ChoiceFieldとRadioSelectをウィジェットとして使用して、グリッド上の1行に1つのフィールドを持つdjangoフォームで行います。

line1 = forms.ChoiceField(widget=forms.RadioSelect, choices=TRUC)
line2 = …

次に、これを正しくレンダリングするためのテンプレートレイアウトを見つける必要があります。eahcの選択肢がであるをRadioSelect生成します。選択ラベルはに含まれていますが、これはここで必要なものではありません。<ul><li><li>

floppyformsを使用すると、サブクラス化して、ラベルを省略するためRadioSelectにcutom template_name(テンプレートを参照)を付けることができます。たとえば、の代わりにfloppyforms/radio.htmlテーブルセル(s)をレンダリングするように変更し、フォームマークアップでテーブルのヘッダーにラベルが付いたテーブルを生成することもできます。<td><li>

import floppyforms as forms

class RadioSelect(forms.RadioSelect):
    template_name = 'myforms/radio.html'

上記のテンプレートに目的の行マークアップを配置します。

次に、フォームをレンダリングするテンプレートで次のようにします。

<form method="post" action="youraction">
  <table>
    <thead>
      <td> <!-- put your form headers here --> </td>
    </thead>
    <tbody>
      {% for field in form %}
        <tr>
          <td>{{ field.label_tag }}</td>
          {{ field }}
        </tr>
      {% endfor %}
    </tbody>
  </table>
<!-- submit button -->
</form>

次に、必要なレイアウトを取得するために、いくつかのCSSスタイルを適用するだけです:)

于 2012-01-04T14:32:54.603 に答える
1

このフィールドを試すことができますdjango-radiogrid

于 2015-07-26T15:06:23.113 に答える