Как получить модальную форму на одной странице с updateview? - PullRequest
1 голос
/ 10 июля 2020

Я установил функцию просмотра обновления следующим образом:

class Load_paper(UpdateView):
        model = Materiale
        form_class = MaterialeForm
        template_name = "magazzino/edit_paper_modal.html"

Установка url.py как:

path('magazzino_edit/<int:pk>', views.Load_paper.as_view(), name='load_paper')

И, наконец, в моей таблице шаблонов столбец со следующим кодом :

<td><a href="{% url 'load_paper' element.id %}">Edit</a> </td>

Все работает отлично, но при нажатии на кнопку редактирования django перенаправляет меня на другую страницу для редактирования отдельных объектов.

есть ли способ открыть модальный форма на той же странице, когда я нажимаю кнопку редактирования ??

Это мой фактический edit_paper_modal.html

{% load crispy_forms_tags %}

    <div class="modal-dialog modal-lg" role="document">
        <form action="{% url 'load_paper' pk=object.pk %}" method="post" class="form" enctype="multipart/form-data">
          {% csrf_token %}
            <div class="modal-content">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                        <span aria-hidden="true">×</span>
                        <span class="sr-only">Close</span>
                    </button>
                    <h4 class="modal-title">Edit Paper</h4>
                </div>
                <div class="modal-body">
                  {% csrf_token %}
                  {{form|crispy}}
                </div>
                <div class="modal-footer">
    
                    <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
                    <input type="submit" class="btn btn-primary" value="Save changes" />
                </div>
            </div><!-- /.modal-content -->
        </form>
    </div>

Я нашел код jQuery, который может мне помочь, но я не знаю, как это установить в моих views.py и urls.py.

$(document).ready(function(){
  $("#myBtn").click(function(){
    var pk = $(this).data('pid')
    $("#myModal").modal("show");
  });
  $("#myModal").on('show.bs.modal', function(event){
    var modal = $(this)
    var pk = $(this).data('pid')
    $.ajax({
        data: {'pk': pk},
        url: "{% url 'edit_income' %}",
        context: document.body,
        error: function(response, error) {
            alert(error);
        }
    }).done(function(response) {
        modal.html(response);
    });
  });
});
...