Отключите кнопку до выполнения задачи Celery по требованию

Продолжение вопроса к моей предыдущей проблеме.

У меня есть кнопка в шаблоне Django, которая запускает задачу Celery. Я хочу отключить кнопку после нажатия на нее. Это ресурсоемкая задача, и определенно необходимо предотвратить многократное нажатие.

Моя первоначальная идея состояла в том, чтобы иметь две кнопки, и условно показывать одну или другую, в зависимости от того, запущена задача или нет. Я бы как-то (еще не придумал как), используя AsyncResult(str(task)).status = "SUCCESS", передал полученный булеан в шаблон. Затем показать отключенную кнопку, если False, в противном случае исходную кнопку с возможностью клика.

template.html

{% if importEnabled == True %}
    <a class="btn btn-primary btn--full" id="id_import_data_btn" href="
        {% url "import_data" company.company_id %}">Import Data</a>
{% else %}
    <a class="btn btn-primary btn--full" disabled="True">Importing Data (button disabled)...</a>

views.py

def trigger_import_data(request, company_id):
    task = import_data_for_company.delay(company_id)
    importEnabled = AsyncResult(str(task)).status == "SUCCESS"
    return HttpResponseRedirect(reverse_lazy("edit-company-profile"))

Моя вторая идея заключалась в использовании JS в шаблоне и отключении кнопки после нажатия на нее. Здесь я мог сделать так, чтобы кнопка не функционировала (но не отключалась) после щелчка, но это также не вызывало задачу celery, что плохо.

Затем я попробовал установить булево значение для хранения сессии, чтобы определить отображение кнопки в шаблоне. Но, похоже, Django не делает хранение сессий.

utils.js

export const disableImportButton = () => {
    const importButton = document.getElementById("id_import_data_btn");

    importButton.onclick = (e) => {
        // importButton.disabled = true;
        // setTimeout(importButton.removeAttribute("href"), 5000);
        // e.preventDefault();
        sessionStorage.setItem("importEnabled", "false");
    };
};

Как я могу решить эту проблему?

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