x-editable & django: как передать модель на сервер - PullRequest
0 голосов
/ 11 декабря 2018

с использованием django 1.11.7 & x-editable (самая последняя версия)

x-editable позволяет передавать на сервер следующие параметры:

  • "pk" = pk ofobject
  • "name" = имя поля, которое нужно изменить
  • "value" = новое значение

Здесь отсутствует способ идентификации Djangoмодель.Конечно, этим можно управлять в представлении (где обрабатывается запрос POST), но это не универсальный способ обработки вещей, так как для этого требуется представление в соответствии с моделью Django.

Как мы можем получить этоповедение, при котором объекты из нескольких моделей Django можно редактировать с одной и той же HTML-страницы:

HTML:

<span>Model1/pk123/Field1:</span> <a href="#" class="xed"
data-model="django_model1" data-name="field1" data-type="text"
data-pk="123">dummy content</a>

<span>Model2/pk456/Field2:</span> <a href="#" class="xed"
data-model="django_model2" data-name="field2" data-type="text"
data-pk="456">another dummy content</a>

JAVASCRIPT:

$(document).ready(function () {
  $.fn.editable.defaults.mode = 'inline';                
  $('.xed').editable({
    params: {
      csrfmiddlewaretoken:'{{csrf_token}}',
      },
    url: '/xed_post',
  });

Проблема заключается в том, что "переменная data-model "не передается серверу, поэтому сервер не знает, в какой модели (DB TABLE) искать первичный ключ" pk "

Жесткое кодирование этой модели данных в коде javascriptвозможно:

$(document).ready(function () {
  $.fn.editable.defaults.mode = 'inline';                
  $('.xed').editable({
    params: {
      csrfmiddlewaretoken:'{{csrf_token}}',
      model:'django_model1'
    },
    url: '/xed_post',
  });

... но тогда как мы можем заставить это работать для нескольких editbale django_models на страницу HTML?

Возможно, некоторая магия javascript может помочь здесь, чтобы получить правильную информацию вэта переменная 'модель'?

Спасибо за помощь

...