Django UpdateView Bootstrap Modal
Модальное окно открывается, но данных в полях формы(модального окна) нет! Причем когда я заполняю данные в пустые поля и сохраняю, данные сохраняются, идет редирект, данные отображаются в шаблоне, history_by_service.html, и когда я нажимаю кнопку назад в браузере, то переход на предыдущую страницу не происходит, и если снова нажать на кнопку изменить , именно только , что заполненной формы данными, то открывается модальное и там уже показывает эти данные!! Это неправильное поведение!! Что нужно изменить в коде, для того , чтобы отображать модальное окно с данными в полях формы? Нужен ли Js для отображения формы с данными в модальном окне? В base.html у меня подключен bundle.min.js
view.py
class HistoryPamentsByService(ListView):
model = Payments
form_class = PaymentsForm
template_name = 'myflat/history_by_service.html'
context_object_name = 'flats'
slug_url_kwarg = 'slug'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
form=PaymentsForm()
payments=Payments.objects.filter(flats_id=self.kwargs['flats_id'])
context['form'] = form
return context
def get_form(self, *args, **kwargs):
super().get_form(*args, **kwargs)
form = PaymentsForm()
return form
def get_queryset(self):
return Payments.objects.filter(slug=self.kwargs['slug'],flats_id=self.kwargs['flats_id'])
class UpdatePayments(UpdateView):
model = Payments
pk_url_kwarg = 'pk'
template_name = 'myflat/update_modal.html'
context_object_name = 'name_flat'
fields = ['name_service',
'amount_of_bill',
'amount_of_real',
'date_of_bill',
'date_of_payment',
'status_payment',
'comments',
'bill_save_pdf'
]
def get_success_url(self):
return reverse('HistoryPamentsByService',
kwargs={'slug':self.object.slug,
'flats_id': self.object.flats_id})
urls.py
urlpatterns = [
path('history_by_service/<slug:slug>/<int:flats_id>/', HistoryPamentsByService.as_view(), name='HistoryPamentsByService'),
path('UpdatePayments/<int:pk>/', UpdatePayments.as_view(), name='UpdatePayments'),
]
шаблон history_by_service.html (для ListView)
{% extends "base.html" %}
{% block content %}
{% for flat in flats %}
<tr>
<td scope="row">{{ forloop.counter }} </td>
<td>{{flat.name_service}}</td>
<td>{{flat.amount_of_bill}}</td>
<td>{{flat.amount_of_real}}</td>
<td>{{flat.date_of_bill}}</td>
<td>{{flat.date_of_payment}}</td>
<td>{{flat.get_status_payment_display}}</td>
<td>{{flat.comments}}</td>
<td>{{flat.bill_save_pdf}}</td>
<td>
<form method="post" action="{% url 'UpdatePayments' flat.pk %}" enctype="multipart/form-data">
{% csrf_token %}
<button type=button class='btn btn-success btn-sm' id="update_modal"
data-bs-toggle="modal" data-bs-target="#update_modal{{flat.pk}}">
<i class="fa-regular fa-pen-to-square fa-fw"></i>Edit</button>
{% include "myflat/update_modal.html" %}
</form>
</td>
{% endfor %}
{% endblock content %}
шаблон update_modal.html
<div class="modal fade" id="update_modal{{flat.pk}}" data-bs-backdrop="static"
data-bs-keyboard="false" tabindex="-1" aria-labelledby="update_modal" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content" style="width:auto">
<div class="modal-header">
<h5 class="modal-title " id="update_modalLabel">{{flat.name_flat}}</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<form method="post" action="{% url 'UpdatePayments' flat.pk %}" enctype="multipart/form-data">
<div class="modal-body">
{% csrf_token %}
{% for field in form %}
{{field}}
{% endfor %}
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-primary" >
<i class="fa-solid fa-trash fa-fw" ></i>Save</button>
<button type="button" class="btn btn-warning" data-bs-dismiss="modal">
<i class="fa-regular fa-circle-xmark"></i>Close</button>
</div>
</div>
</form>
</div>
</div>
и пробовал вставить следующий код:
class UpdatePayments(UpdateView):
model = Payments
pk_url_kwarg = 'pk'
form_class = PaymentsForm
template_name = 'myflat/update_modal.html'
context_object_name = 'name_flat'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
obj = Payments.objects.get(pk=self.kwargs['pk'])
form = PaymentsForm(self.request.POST or None, instance=obj)
context['form'] = form
return context