Django, кнопка редактирования в модальной форме не работает - PullRequest
0 голосов
/ 10 июля 2020

В одном из моих приложений django я установил следующую архитектуру:

#models.py
    class Income(models.Model):
        price = models.DecimalField()
        quantity = models.DecimalField()
        date=models.DateField()

# forms.py
    class IncomeForm(forms.ModelForm):
        class Meta:
            model = Income
            fields = "__all__"

#views.py
def income_(request):
    elements = Income.objects.all()
    if request.method == 'POST':
         form = IncomeForm(request.POST)
         if form.is_valid():
             new_input = form.save()
    else :
       form = IncomeForm()
       elements = Income.objects.all()

    context= {
       'form': form,
       'elements':elements,
            }
    return render(request, "income/income.html", context)

def edit_income(request):
    pk = request.GET.get('pk')
    object = get_object_or_404(Income, pk = pk)
    form = IncomeForm(instance=object)
    return render(request, 'edit_income.html', {
        'object': object,
        'pk': pk,
        'form': form,
        })

После этого я установил следующие шаблоны URL:

path('magazzino/gestionemagazzino/', views.income_, name ='gestione_magazzino'),
path('magazzino/edit_modal/<int:materiale_pk/>', views.edit_income, name='edit_income')

В моем доходе. html файл. Я установил следующее

{% load crispy_forms_tags %}
 <form id="" method="post">                    
   <div class="form-group col-2 0 mb-0" >
       {{form.quantity|as_crispy_field}}
   </div>
   <div class="form-group col-2 0 mb-0" >
       {{form.price|as_crispy_field}}
   </div>
   <div class="form-group col-2 0 mb-0" >
      {{form.date|as_crispy_field}}
   </div>
</div>

После этого я создал таблицу, в которой перечислены все заполненные данные, и в последнем столбце я установил следующую кнопку:

<button id="myBtn" data-target="#myModal"> </button> 

Теперь я хочу создать кнопку для каждой строки, которая открывает модальную форму, которая дает мне возможность изменять указанные c данные для каждого набора данных id.

Я попытался выполнить следующий сценарий:

$(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);
    });
  });
});

Это открывает следующий edit_income. html:

<div class="modal-dialog modal-lg" role="document">
    <form action="{% url 'edit_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 Income</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>

Но если я нажимаю на кнопку, ничего не работает. В чем проблема?

...