3

我想用这种网格制作一个表格:

网格问题

你知道我该怎么做吗?有没有一个 Django Form 小部件呢?

实际上,它是具有相同选择列表的问题,在网格中显示为收音机。

谢谢,

纳提姆

4

2 回答 2

4

我会使用 django 表单来执行此操作,网格上每行一个字段,ChoiceField 和 RadioSelect 作为小部件:

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

然后你需要找到模板布局来正确渲染它。RadioSelect生成 a <ul>,其中 eahc 选择为 a <li>。选择标签包含在 中<li>,这不是您想要的。

使用 floppyforms,您可以子类化RadioSelect并给它一个自定义模板名称(查看floppyforms/radio.html模板)以省略标签。您还可以更改它以呈现表格单元格 ( <td>s) 而不是<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 回答