У меня есть DataTable, который включает следующее определение столбца для добавления кнопки в каждую строку:
"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
на консоль, он дает мне правильный идентификатор для каждой строки, видимой в DataTable.
Как бы я имитировал простую версию кнопки Django, чтобы URL-адрес данных правильно возвращал жесткийзакодированный URL для каждой строки таблицы данных?