我正在使用Django模型来表示日间小时组合。目标是渲染一个类似矩阵的形式,其中x轴为天,y轴为小时。用户可以检查每个组合以定义一周中何时有车辆可用。
该模型如下:
class TimeMatrix(models.Model):
MO00 = models.BooleanField(default=False)
MO01 = models.BooleanField(default=False)
MO02 = models.BooleanField(default=False)
MO03 = models.BooleanField(default=False)
....
SO22 = models.BooleanField(default=False)
SO23 = models.BooleanField(default=False)
我喜欢将来自CreateView的相应表单呈现为上述矩阵。执行此操作的html需要一个days = ['MON', 'TUE', ..., 'SUN']
和hours = ['00', '01', ..., '23']
的列表才能动态呈现表单。以下html使用Django CreateView
提供的格式显示了不包含的内容:
<form action="#">
<div class="table-responsive">
<table class="table">
<thead class="thead-light">
<tr>
<th scope="col">Day</th>
{% for h in hours %}
<th scope="col">{{h}}</th>
{% endfor %}
</tr>
</thead>
<tbody>
{% for d in days %}
<tr>
<th scope="row" class="wt-col">{{d}}</th>
{% for h in hours %}
<td><input type="checkbox" name="{{d}}{{h}}" value="{{d}}{{h}}" id="id_{{d}}{{h}}"></td>
{% endfor %}
</tr>
{% endfor %}
</tbody>
</table>
</div>
</form>
由于我喜欢使用Django表单中内置的安全措施,因此我喜欢使用form
提供的CreateView
。按照this的说明,可以使用form.<field_name>
访问单个表格。将其与html结合使用将需要一种动态的方式来访问表单字段,这对我提出了两个问题:
form
上失败(例如{{form|getattribute:'MON00'}}
)。我想念什么?{{form|getattribute:d+h}}
将不起作用),访问所需表单字段的合适方法是什么?