Как передать целочисленную переменную javascript в качестве первичного ключа в URL-адрес django с пакетом modalForm - PullRequest
0 голосов
/ 22 мая 2019

Я использую DataTables (https://datatables.net/). При щелчке по каждой строке значение столбца ID должно быть передано в качестве первичного ключа для открытия формы обновления.

Все работает нормальноза исключением передачи переменной javascript в URL-адрес django.

var adresid = 0
$('.dt-edit').each(function () {
    $(this).on('click', function(evt){
    $this = $(this);
    adresid = parseInt($this.parents('tr')[0].cells[13].innerHTML)
    })
    .modalForm({
       formURL: "{% url 'adres-update-modal' adresid %}"
    });
});

Я пытался использовать метод .replace() как formURL: "{% url 'adres-update-modal' pk %}".replace('pk', adresid), но это не сработало.

Это ошибкачто я продолжаю получать:

Обратное для 'adres-update-modal' с аргументами '(' ',)' не найдено. 1 шаблон (ы) пробовал: ['adres / (? P [0-9] +) / updatemodal / $ ']

Когда я заменяю adresid в URL на целое число (например, 16), все работает отлично.

Любая помощь будет оценена

РЕДАКТИРОВАТЬ: вот HTML-код моей таблицы

 <table id="masterTable" class="table nowrap" style="width:100%">
                    <thead>
                    <tr>
                        <th></th>
                        <th></th>
                        <th>A</th>
                        <th>B</th>
                        <th>C</th>
                        <th>D</th>
                        <th>E</th>
                        <th>F</th>
                        <th>G</th>
                        <th>H</th>
                        <th style="text-align:center;width:100px;">Add adres <button type="button" data-func="dt-add" class="btn btn-success btn-xs dt-add modal-adres-create">
                            <span class="glyphicon glyphicon-plus" aria-hidden="true"></span>
                        </button></th>
                        <th class="none">I</th>
                        <th class="none">J</th>
                        <th class="none">K</th>
                        <th class="none">L</th>
                        <th class="none">M</th>
                    </tr>
                    </thead>
                    <tbody>
                    {% for X in Y %}
                    {% for P in Q %}
                    {% if X.Z == U %}
                    <tr>
                        <td></td>
                        <td></td>
                        <td>A</td>
                        <td>B</td>
                        <td>C</td>
                        <td>D</td>
                        <td>E</td>
                        <td>F</td>
                        <td>G</td>
                        <td>H</td>
                        <td>
                            <button type="button" class="btn btn-primary btn-xs dt-edit" style="margin-right:16px;">
                                <span class="glyphicon glyphicon-pencil" aria-hidden="true"></span>
                            </button>
                            <button type="button" class="btn btn-danger btn-xs dt-delete">
                                <span class="glyphicon glyphicon-remove" aria-hidden="true"></span>
                            </button>
                        </td>
                        <td>I</td>
                        <td>J</td>
                        <td>K</td>
                        <td>L</td>
                        <td>M</td>
                    </tr>
                    {% endif%}
                    {% endfor %}
                    {% endfor %}
                    </tbody>
                </table>

РЕДАКТИРОВАТЬ 2: Чтобы уточнить, когда я использую console.log(adresid), он возвращает целое число со значением16. Поэтому я не ожидаю, что проблема будет где-то еще, кроме той части javascript, где это значение должно быть передано значению formURL.

1 Ответ

0 голосов
/ 22 мая 2019

Предполагая, что adresid = parseInt($this.parents('tr')[0].cells[13].innerHTML) возвращает требуемое значение, я бы ожидал, что метод modalForm будет расположен внутри обратного вызова on, примерно так:

$('.dt-edit').each(function () {
  $(this).on('click', function(evt){
    $this = $(this);
    adresid = parseInt($this.parents('tr')[0].cells[13].innerHTML);
    $('.adres-update-modal').modalForm({
       formURL: "{% url 'adres-update-modal' adresid %}"
    });
  });
});

Это будет единственноеспособ получить правильное значение для строки щелкнул

...