Обновление столбцов таблицы DataTable после получения данных с сервера

Я новичок в DataTables js, мне нужно решение для моей проблемы. У меня есть приложение Django, где я использую DataTables с обработкой на стороне сервера, шаблон таблицы динамический для всех моделей, которые у меня есть, я просто передаю columns (список dicts с data, name и title) в контексте шаблона, довольно просто...

def my_page_view(request):
    columns = generate_datatables_columns("MyModel")

    return render(
        request,
        "my_page.html",
        {"columns": columns}
    )
<script>
    $(document).ready(function() {
        var columns = [];
        {% for col in columns %}
            var jsObject = {
                {% for key, value in col.items %}
                    "{{ key }}": "{{ value }}",
                {% endfor %}
            };
            columns.push(jsObject);
        {% endfor %}

        var table = $('#my-table').DataTable({
            "processing": true,
            "serverSide": true,
            "ajax": {
                "url": "/my/url",
                "type": "GET",
            },
            "columns": columns,
        });
    });
</script>

<table id="my-table" class="display" width="100%">
    <thead>
        <tr>
            {% for column in columns %}
                <th id="dt_col_{{column.data}}">{{ column.name }}</th>
            {% endfor %}
        </tr>
    </thead>
</table>

После этого мне нужно было внести некоторые изменения в столбцы, но в зависимости от полученных данных, то есть я должен иметь возможность обновлять столбцы внутри определения DataTable после получения данных. Чтобы сделать идею более понятной, следующий код представляет одну из попыток, которую я пробовал, используя ajax.dataSrc prop:

var table = $('#my-table').DataTable({
    "processing": true,
    "serverSide": true,
    "ajax": {
        "url": "/my/url",
        "type": "GET",
        "dataSrc": function (json) {
            var data = json.data;
            var newColumns = columns;

            // make changes on data and newColumns variables with some conditions...
            
            // here should update the datatable columns with the value of newColumns.

            return data;
        }
    },
    "columns": columns,
});

С помощью этого метода я не смог найти способ обновления столбцов, я пробовал и другие способы, такие как использование drawCallback, или пользовательской функции ajax, но я всегда оказывался в тупике.

Я буду очень благодарен, если кто-нибудь поможет мне с этим.

Вернуться на верх