добавление данных во второе модальное окно, и обновление данных в первом модальном окне, без перезагрузки страницы (ajax)
- есть два модальных окна в них 2 формы своих
- модальное окно B с формой B повляется когда нажать на кнопку добавить в модальном окне A с формой A
- после нажатия добавить в модальном окне B с формой B, страница не перезагружается, а данные обновляются в модальном окне A с формой A
- в идеале чтобы Клиент из модального окна B с формой B подставлялся в Клиента модального окна A с формой A
... на данный момент реализовано при добавлении в модальное окно B с формой B перезагружается страница, и можно вводить данные модальном окне A с формой A
<!-- Модальное окно A-->
<form id="form_a" method="post">
{% csrf_token %}
<label>Книга:</label>{{ form.book }}
<label>Дата:</label>{{ form.date }}
<label>Клиент:</label>{{ form.client }}
<!-- Кнопка-триггер модального окна B-->
<button type="button" class="btn btn-secondary btn-sm m-1" data-bs-toggle="modal"
data-bs-target="#modal_B"><i class="bi bi-plus-lg"></i></button>
</form>
<!-- Модальное окно B-->
<form id="form_b" method="post" action="{% url 'url-b' %}">
{% csrf_token %}
{{ form_B }}
</form>
<script>
$('#form_B').on('submit', function(e) {
e.preventDefault();
$.ajax({
method: 'POST',
url: $(this).attr('action'),
data: $(this).serialize(),
success: function(data) {
$('#modal_B').modal('hide');
},
error: function(data) {
alert('Ошибка: ' + data.responseText);
}
});
});
</script>
class A_ListView(LoginRequiredMixin, A_RequiredMixin, CustomSuccessMessageMixin, CreateView, FilterView):
model = model_A
form_class = Form_A
filterset_class = Filter_A
template_name = 'A.html'
success_url = reverse_lazy('A')
success_msg = 'Запись создана'
def get(self, request, *args, **kwargs):
if 'company' in request.GET:
return super().get(request, *args, **kwargs)
return super(CreateView, self).get(request, *args, **kwargs)
def post(self, request, *args, **kwargs):
if 'company' not in request.POST:
return super(CreateView, self).post(request, *args, **kwargs)
return super().post(request, *args, **kwargs)
def get_context_data(self, **kwargs):
kwargs['A'] = Incoming.objects.all().order_by('-receipt_date')
kwargs['form_B'] = Form_B()
return super().get_context_data(**kwargs)
Источник: Stack Overflow на русском