Перенаправление на Django View после AJAX GET-запроса с предварительно заполненной формой

У меня есть ListView для рендеринга страница с таблицей объектов. Первый столбец - это чекбоксы для выполнения некоторых действий над несколькими объектами (не набор форм). Каждый checkbox содержит объект id в виде value и использует AJAX-запросы для выполнения этих действий. С прямым POST запросом проблем нет, так как я отправляю кучу ids в массиве, проверяю их через форму и update().

Однако я испытываю некоторые трудности с запросом GET, который должен быть более простым:

У меня есть представление для редактирования объекта (FBV). Цель состоит в том, чтобы перенаправить на это представление с полем, содержащим все те ids, которые были проверены на ListView. Но я только что узнал, что я не могу вызвать render() после вызова AJAX, поэтому мне интересно, какой правильный способ обработки такого перенаправления, передающего initial данные форме, представленной в контексте этого представления.

Упрощенный код:

class ProducutsListView(ListView):
    model = models.Product
    template_name = "production/products_list.html"
    paginate_by = 50

Вид, на который нужно перенаправить:

def product_update_view(request):
    if request.method == "POST":
        form = forms.ProductUpdateForm(
                    request.POST,
                )
        if form.is_valid():
            products = form.cleaned_data["products"]
            -------------------------------------
            # some more validated data extracting
            -------------------------------------
            products.update(**fields)
            return redirect("products_list")
    else:
        form = forms.ProductUpdateForm()

        if is_ajax(request):
            products_form = forms.ProductsMultipleForm(request.GET) # form contains only one field "poducts" represents an array of objects
            if products_form.is_valid():
                products = products_form.cleaned_data["products"]
                form = forms.ProductUpdateForm(
                    initial={"products": products}
                )
                **# how to render a page with form contains `init` data?**

        return render(request, "production/product_update.html", {"form": form})

JS / AJAX:

// there are multiple Map() objects each contains **view url**, **button** triggers request and **method** of request.
var $buttonsList = [asTested, setOnStock, configChange];
    $.each($buttonsList, function () {
        var $url = this.get("url");
        var $btn = this.get("btn");
        var $method = this.get("method");
        $btn.on("click", function () {
            $.ajax({
                type: $method,
                headers: $method == "POST" ? { "X-CSRFToken": CSRF } : {},
                url: $url,
                dataType: "json",
                traditional : true,
                data: {"products": getProductIds()},
                success: function (response) {
                    if ($method == "POST") {
                        location.reload();
                    };    
                },
            });
Вернуться на верх