我想用这种网格制作一个表单:
你知道我该怎么做吗?有 Django Form 小部件吗?
实际上,这是具有相同选项列表的问题,在网格中显示为单选。
谢谢
纳蒂姆
最佳答案
我会使用 django 表单来完成此操作,网格上每行一个字段,并使用 ChoiceField 和 RadioSelect 作为小部件:
line1 = forms.ChoiceField(widget=forms.RadioSelect, choices=TRUC)
line2 = …
然后您需要找到模板布局以正确呈现它。 RadioSelect
生成 <ul>
eachc 选择是 <li>
。选择标签包含在 <li>
中,这不是您想要的。
使用软盘,您可以子类 RadioSelect
并给它一个自定义 template_name (查看 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 样式即可获得您需要的布局:)
关于django - 使用 Django Forms 或 Django Floppyforms 显示网格单选表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8727436/