Почему функция просмотра отображает более одного экземпляра поля формы? - PullRequest
0 голосов
/ 06 мая 2020

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

def save_room_form(request, form, template_name):
    data = dict()
    if request.method == 'POST':
        if form.is_valid():
            form.save()
            data['form_is_valid'] = True
            rooms = list(Room.objects.all().values())
            data['html_room_list'] = render_to_string('sharespace/includes/partial_room_form.html',
                                                      {'rooms': rooms})
        else:
            data['form_is_valid'] = False
    context = {'form': form}
    data['html_form'] = render_to_string(template_name,
                                         context,
                                         request=request)
    print(data.items())
    return JsonResponse(data)


def create_post(request):
    if request.method == 'POST':
        form = RoomForm(request.POST)
    else:
        form = RoomForm()
    return save_room_form(request, form, 'sharespace/shareform.html')

ajax call:

$(function () {
    var loadForm = function () {
        var btn = $(this);
        console.log("before ajax")
        $.ajax({
            url: btn.attr("data-url"),
            type: 'get',
            dataType: 'json',
            beforeSend: function () {

                $("#modal-room").modal("show");

            },

            success: function (data) {
                $("#modal-room .modal-content").html(data.html_form)
                console.log("clicked");
            }
        });

    };

    //Create room
    $(".js-create-room").on("click", loadForm);


});

Моя проверка работоспособности предполагает, что проблема связана с представлением (я думаю ).

Любая помощь будет оценена по достоинству. Спасибо

Edit

Мне удалось сузить проблему до функции render_to_string. Перед этой функцией context dict печатает один экземпляр формы, например;

Имя: Статус: room_number:

Но после render_to_string метод, форма печатается как;

Имя: Статус: room_number: Name: Status: room_number: Name: Status: room_number:

И увеличение количества полей формы модели приводит к экспоненциальному увеличению количества отображаемых полей.

Что я делаю не так? Есть ли лучший способ go об этом?

...