Я пытаюсь сериализовать набор запросов Django, вернуть результаты в URL и указать DataTable на результирующий URL.Это потенциальное решение возникло для решения проблемы низкой производительности при загрузке тысяч строк из Django в DataTable через DOM.
У меня есть представление:
from django.http import HttpResponse
from django.core import serializers
def json_ouput(request):
objects= MyModel.objects.all()
json = serializers.serialize('json', objects)
return HttpResponse(json, content_type='application/json')
Представление подключается к этому URL-адресу:
url(r'^home/json_ouput/$', views.json_ouput, name='json_ouput_url',),
Мой шаблон указывает на этот URL-адрес как источник AJAX для DataTable:
<table id="example">
<thead>
<tr>
<th>Description</th>
<th></th>
</tr>
</thead>
<tbody></tbody>
</table>
<script defer type="text/javascript" language="javascript" class="init">
$(document).ready(function() {
$('#example').dataTable( {
"processing": true,
"ajax": {
"processing": true,
"url": "{% url 'json_output_url' %}",
"dataSrc":''
},
"scrollY": 800,
"deferRender": true,
"scroller": true,
"columns": [
{ "data": "fields.description" },
{ "data": "pk" }
]
});
});
</script>
Результаты отображаются примерно через 40 секунд для 9000 строк.Это та же производительность, что и при загрузке данных через DOM (без сериализации в JSON) и без DataTables Scroller .Насколько я понимаю, Scroller не загружает все данные, но, похоже, загружает все данные одновременно (т.е. все 9 000 строк находятся в DOM, прежде чем данные будут показаны).
Как получить DataTables для загрузки данных по частям при прокрутке таблицы?Или я могу что-то сделать на стороне Django, чтобы сначала разбить данные на страницы?