Таблица CRUD / представление не обновляется после сохранения формы - PullRequest
0 голосов
/ 08 октября 2019

Django App Refresh Issue

После отправки формы для обновления / удаления / создания элементов представление (таблица CRUD) не обновляется.

Проблема началась после того, как я добавил фильтрацию модели

Вот соответствующие фрагменты кода:

views.py:

    def item_list(request):`enter code here`
        user_list = item.objects.all()
        user_filter = UserFilter(request.GET, queryset=user_list)
        return render(request, 'items/item_list.html', {'filter': user_filter})


def search(request):
    user_list = item.objects.all()
    user_filter = UserFilter(request.GET, queryset=user_list)
    return render(request, 'items/item_list.html', {'filter': user_filter})

def save_item_form(request, form, template_name):
    data = dict()
    if request.method == 'POST':
        if form.is_valid():
            form.save()
            print('x')
            data['form_is_valid'] = True
            user_list = item.objects.all()
            user_filter = UserFilter(request.GET, queryset=user_list)
            data['html_item_list'] = render_to_string('items/includes/partial_item_list.html',  {'filter': user_filter})
        else:
            data['form_is_valid'] = False
    context = {'form': form}
    data['html_form'] = render_to_string(template_name, context, request=request)
    return JsonResponse(data)

def item_create(request):
    if request.method == 'POST':
        form = itemform(request.POST)

    else:
        form = itemform()
    return save_item_form(request, form, 'items/includes/partial_item_create.html')

def item_update(request, pk):
    Item = get_object_or_404(item, pk=pk)
    if request.method == 'POST':
        print('postx')
        form = itemform(request.POST, instance=Item)
    else:
        form = itemform(instance=Item)
        print('postitem')
    return save_item_form(request, form, 'items/includes/partial_item_update.

books.js:


$(function () {

  /* Functions */

  var loadForm = function () {
      var btn = $(this);
      $.ajax({
      url: btn.attr("data-url"),
      type: 'get',
      dataType: 'json',
      beforeSend: function () {
        $("#modal-book .modal-content").html("");
        $("#modal-book").modal("show");
      },
          success: function (data) {
        $("#modal-book .modal-content").html(data.html_form);
      }
    });
  };

  var saveForm = function () {
      var form = $(this);
    $.ajax({
      url: form.attr("action"),
      data: form.serialize(),
        type: form.attr("method"),
      dataType: 'json',
        success: function (data) {
            if (data.form_is_valid) {
                    alert("Book created!");  // <-- This is just a placeholder for now for testing
          $("#book-table tbody").html(data.html_item_list);
            $("#modal-book").modal("hide");
        }
        else {
          $("#modal-book .modal-content").html(data.html_form);
        }
      }
    });
    return false;
  };


  /* Binding */

  // Create book
  $(".js-create-book").click(loadForm);
  $("#modal-book").on("submit", ".js-book-create-form", saveForm);

  // Update book
  $("#book-table").on("click", ".js-update-book", loadForm);
  $("#modal-book").on("submit", ".js-book-update-form", saveForm);

  // Delete book
  $("#book-table").on("click", ".js-delete-book", loadForm);
  $("#modal-book").on("submit", ".js-book-delete-form", saveForm);

});

partial_item_list.html:

{% for item in filter.qs %}
    <tr> 
        <td></td>
        <td>{{ item.type }}</td>
        <td>{{ item.priorisee }}</td>
        <td>{{ item.nom_projet }}</td>
        <td>{{ item.traitant }}</td>
        <td>{{ item.etat }}</td>
        <td>{{ item.no_sd }}</td>
        <td>{{ item.ref_outil }}</td>
        <td>{{ item.cause_blocage }}</td>
        <td>{{ item.date_postee }}</td>
        <td>{{ item.date_pec }}</td>
        <td>{{ item.date_validation }}</td>
        <td>{{ item.date_fintraitment }}</td>
        <td>{{ item.date_bloques }}</td>
        <td>{{ item.date_fin_traitment_implementation }}</td>
        <td style="width: 150px">
            <button type="button"
                    class="btn btn-warning btn-sm js-update-book"
                    data-url="{% url 'item_update' item.id %}">
                <span class="glyphicon glyphicon-pencil"></span> Edit
            </button>
            <button type="button"
                    class="btn btn-danger btn-sm js-delete-book"
                    data-url="{% url 'item_delete' item.id %}">
                <span class="glyphicon glyphicon-trash"></span> Delete
            </button>
        </td>
    </tr>
{% empty %}
  <tr>
    <td colspan="8" class="text-center bg-warning">No entry</td>
  </tr>
{% endfor %}

После добавления нового элемента в модель он также должен обновить. Не могли бы вы помочь мне решить эту проблему? Если что-то еще нужно, пожалуйста, дайте мне знать. :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...