我希望在表格中显示模型的所有对象,其中信息为表中的只读字段,每个字段作为表格的单元格。
目前,我可以使用所有记录在表格周围呈现表单...
In views: schedule_projects = Record.objects.all()
In template:
<form action="" method="POST">{% csrf_token %}
<table>
<thead>
<tr>
<th>Record</th>
<th>Date</th>
<th>Comment</th>
<th colspan="2">Attached</th>
</tr>
</thead>
{% for record in schedule_projects %}
<tr>
<td>{{record.projectname}}</td>
<td>{{record.date_edited|date:"d-m-Y H:i"}}</td>
<td>{% if record.project_details %}{{record.project_details}}{% else %}{%endif%}</td>
<td>{{record.attached_files|default_if_none:'0'}}</td>
<td><input type="checkbox" name="record" value="{{record.plan_delete}}"></td>
</tr>
{% endfor %}
</table>
<button type="submit" name="plan_delete">Add to delete schedule</button></form>
不是像这样手动操作,而是想用form.py中内置的表单来完成它,因为它提供了验证,csrf和其他方法。
我希望表单呈现没有标签的每个字段,以及只读文本字段,而不是输入字段。如果初始表单中的值为true,我还希望激活布尔字段plan_delete = True的记录,如果表单已提交,我可以在视图中添加更多带有plan_delete布尔值的记录。它看起来应该是这样的。
Record Date Comment Attached
John Doe 01/02/2017 Current 3 (checkbox)
Peter Piper 02/01/2017 Bla. bla 5 (checkbox)
Etc.. 11/12/2017 Etc.. 0 (checkbox)
Add to delete schedule (submit)
我尝试过使用表单as_table和modelform,但似乎很简单的东西很快变得非常复杂。
所以我的问题是,我的方式是正确的,最简单的方法 - 或者我是否遗漏了一些简单的关于form.form或modelform添加到forms.py的好处?如何渲染包含所有记录的表单,以及plan_delete字段的复选框 - 以便我可以在视图中处理它。
答案 0 :(得分:0)
在您的视图中,您可以使GET函数返回一个窗体,其窗口小部件属性设置为readonly,如下所示:self.fields['sku'].widget.attrs['readonly'] = True