django - 使用 Django Forms 或 Django Floppyforms 显示网格单选表单

标签 django forms django-forms django-floppyforms

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

Grid questions

你知道我该怎么做吗?有 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/

相关文章:

css - 联系表格 CSS

forms - 表单标签内的 DIV 会导致问题吗?

django - 如何从表单构造函数动态更新Django Form Meta类字段?

python - 递归处理分页

django - 获取 request.POST 中键值的最简单方法

javascript - JS改变django中的session时出现问题

django - 单个 Django 应用程序的多个登录 URL

php - 提交表单并使用 PHP 通过电子邮件发送

python - 尝试访问 formset.cleaned_data.get ['field' 时出现类型错误]

python - 如何在admin外使用Django-import-export ImportForm和ConfirmImportForm