我正在使用模型表单,并且我已经在模板中呈现了如下形式。如何呈现多个列中的form.as_table
<table>
{{form.as_table}}
</table>
但问题是,它将所有字段呈现为行。由于我的模型包含200多行,因此当它将元素显示为200行时看起来很糟糕。我想将它们分成5列,所以总计行数将在40-43左右。是否有任何内置的模板标签可用于此或任何其他方式使用我们可以解决问题。
我正在使用模型表单,并且我已经在模板中呈现了如下形式。如何呈现多个列中的form.as_table
<table>
{{form.as_table}}
</table>
但问题是,它将所有字段呈现为行。由于我的模型包含200多行,因此当它将元素显示为200行时看起来很糟糕。我想将它们分成5列,所以总计行数将在40-43左右。是否有任何内置的模板标签可用于此或任何其他方式使用我们可以解决问题。
你可以参考这个文档:looping over form fields
什么,你可以在你的模板做的是
{% for field in form %}
{%if forloop.counter|divisibleby:"5" %}
{#after 5 fields, somehow put elements in next row
of table, paragraph, or using divs etc
#}
{%endif%}
{{field}}
{%endfor%}
感谢Rohan的工作 – sandeep
你的问题有点不清楚但是这个例子是绰绰有余。
该循环迭代列表data
,我已经替换,以便它将在每行中显示column1,column2,column3,column4,column5
作为示例目的。
<!DOCTYPE html>
<html>
<head>
<title>Jack of All Trades</title>
</head>
<body>
<table border="1">
{% for element in data %}
<tr>
<td><p>column 1 </p></td>
<td><p>column 2 </p></td>
<td><p>column 3 </p></td>
<td><p>column 4 </p></td>
<td><p>column 5 </p></td>
</tr>
{% endfor %}
</tr>
</table>
</body>
</html>
假设data
有5个元素会产生这样的:
这对我更好地工作(divisibleby:N,N- =列数):
<form enctype="multipart/form-data" method="POST">
{% csrf_token %}
{% for field in form %}
{{ field.label }} {{ field }}
{% if forloop.counter|divisibleby:"2" %}
<br>
{% endif %}
{% endfor %}
<input type="submit" value="Continue" />
</form>
您可以遍历表单域并根据需要进行渲染。 – Rohan
罗汉你可以请示范代码,如何迭代。 thansk – sandeep