Пожалуйста, мне нужна помощь с приведенным ниже кодом. Я пытаюсь выполнить вызов 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 об этом?