我有一个视图,显示一组大约3000多条记录的数据(多个对象组合成一个QuerySet。结果使用DataTables渲染到一个表中,但渲染时间很糟糕 - 至少15秒。
我深入研究了DataTables并发现了deferRender API选项以及AJAX之类的东西。因为我之前从未使用它,所以我想就如何处理我的具体情况寻求指导。以下是带有DataTables的views.py和模板。
views.py:
def index(request):
clients = Client.objects.all().prefetch_related('loan_set', 'loan_set__case_set')
return render(request, 'app/index.html',
{'clients': clients})
的index.html:
<table id="case_list" class="display">
<thead>
<tr>
<td>Imię i nazwisko</td>
<td>Edycja</td>
</tr>
</thead>
<tbody>
{% for c in clients %}
<tr>
<td>{{ c.firstName }} {{ c.lastName }}</td>
{% if c.editLock %}
<td><i class="fas fa-lock fa-lg" style="color:Red" title="W edycji przez: {{ c.lockedBy }}"></i> {{ c.lockedBy }}</td>
{% else %}
<form method="post">
{% csrf_token %}
<td><a href="/edit/{{ c.pk }}" name="c_id"><i class="fas fa-pen-square fa-2x" style="color:green"></i></a></td>
</form>
{% endif %}
</tr>
{% endfor %}
</tbody>
</table>
<script type="text/javascript">
$(document).ready(function(){
$('#case_list').DataTable( {
deferRender: true
}
);
});
</script>
答案 0 :(得分:1)
查看datatables的文档。
$('#case_list').DataTable( {
"processing": true,
"serverSide": true,
"ajax": "{yourdata_url}"
} );
在您的视图中,您必须以json格式发送数据。请注意,您需要在视图中使用逻辑进行搜索等。
我还会研究django-datatable-view包。