表中有很多记录(450k条记录),我怎么能比用这种方法更快?
def index(request):
params = Parameters.objects.all()
return render(request, "core/data_table.html", {"params": params})
我在html上插入表格:
{% extends 'base.html' %}
{% block content %}
<html>
<body>
{% if params.count > 0 %}
<h2>Data</h2>
<table>
<tr><th>Id</th><th>par_time</th><th>par_recipe</th><th>par_machine</th><th>par_fa</th><th>par_ag_typ</th><th>par_rollennr</th>
<th>par_def_id</th><th>par_name</th><th>par_value</th></tr>
{% for person in params %}
<tr><td>{{ params.id }}</td><td>{{ params.par_time }}</td><td>{{ params.par_recipe }}</td><td>{{ params.par_machine }}</td>
<td>{{ params.par_fa }}</td><td>{{ params.par_ag_typ }}</td><td>{{ params.par_rollennr }}</td><td>{{ params.par_def_id }}</td>
<td>{{ params.par_name }}</td><td>{{ params.par_value }}</td></tr>
{% endfor %}
</table>
{% endif %}
</body>
</html>
<p><a href="{% url 'home' %}">Return to home</a></p>
{% endblock %}
答案 0 :(得分:1)
1-第一种解决方案是仅将所需的值传递回模板。
根据我在您的代码中看到的内容,您正在使用id, par_time, ..., par_value
,因此,只需将此值传递给模板,而不是所有的python对象即可。像这样:
Parameters.objects.all().values('id', 'par_time', ....
此方法比仅传递python对象更加优化。
2-在django模板中使用分页。您不需要加载表(用户端)中的所有数据。对所有数据进行分页,然后每页传递10个项目。有很多有关如何在Django中使用分页的文档。这是在您的django项目中使用的list of pagination apps。