Заменить URL-адрес данных кнопки Django эквивалентом DRF

#python #ajax #django #datatables #django-rest-framework

#Python #ajax #Django #Таблицы данных #django-rest-framework

Вопрос:

У меня есть таблица данных, которая включает следующее определение столбца для добавления кнопки в каждую строку:

 "columnDefs": [ {
                "targets": 11,
                "data": null,
                "defaultContent": "<button class='btn btn-warning btn-sm js-update-activity' data-url='https://server/platform/activities/104/update/'></button>"
            } ],
  

Это работает, за исключением того, что число 104 является жестко закодированным идентификатором. Обычная версия Django выглядит следующим образом:

 {% for activity in activities %}
  <tr>
    <td>{{ activity.id }}</td>
    <td>
      <button class="btn btn-warning btn-sm js-update-activity"
              data-url="{% url 'activity_update' activity.id %}">
      </button>
    </td>
  </tr>
{% endfor %}
  

activity_update является ли URL-адрес именем для этого URL-адреса:

 url(r'^platform/activities/(?P<pk>d )/update/$', views.activity_update, name='activity_update')
  

Если я использую обычную версию Django в версии DRF, я получаю эту ошибку:

 Reverse for 'activity_update' with no arguments not found. 1 pattern(s) tried: ['platform/activities/(?P<pk>\d )/update/$']
  

Очевидно activity.id , что он не определен в представлении DRF, поскольку данные поступают через конечную точку JSON. Поэтому мне нужно выяснить, как присвоить атрибуту идентификатор из строки DataTable data-url .

Я пытался это сделать…

   "columnDefs": [ {
    "targets": 11,
     "data": null,
     "render": function ( data, type, row ) {
            return "<button type='button' aria-label='update' class='btn btn-warning btn-sm js-update-activity' data-url='https://server/platform/activities/'"   row.id   "'/update/'></button>";
        },
  

… но это приводит к тому, что запрос просто переходит к https://server/platform/activities/ и игнорирует остальные data-url . Когда я печатаю row.id на консоли, он выдает мне правильный идентификатор для каждой строки, видимой в таблице данных.

Как бы мне имитировать обычную версию кнопки Django, чтобы URL-адрес данных правильно возвращал жестко закодированный URL-адрес для каждой строки DataTable?