Большой набор данных, DataTables делают ужасное время - PullRequest
0 голосов
/ 23 мая 2018

У меня есть представление, в котором отображается набор данных из более чем 3000 записей (несколько объектов объединены в QuerySet. Результат отображается в таблице с использованием DataTables, но время рендеринга ужасно - не менее 15 секунд.

Я углубился в DataTables и нашел вариант API deferRender вместе с AJAX. Поскольку я никогда не использовал его раньше, я хотел бы попросить совета о том, как подходить в моем конкретном случае. Ниже приведены views.py и шаблон с DataTables..

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 }}&nbsp;{{ c.lastName }}</td>
                    {% if c.editLock %}
                    <td><i class="fas fa-lock fa-lg" style="color:Red" title="W edycji przez:&nbsp;{{ c.lockedBy }}"></i>&nbsp;{{ 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>

1 Ответ

0 голосов
/ 23 мая 2018

Посмотрите документацию для datatables .

    $('#case_list').DataTable( {
        "processing": true,
        "serverSide": true,
        "ajax": "{yourdata_url}"
    } );

По вашему мнению, вы должны отправить данные в формате json.Обратите внимание, что вам нужно выполнить поиск и т.д. с вашей логикой в ​​представлении.

Я бы также посмотрел на пакет django-datatable-view.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...