Невозможно отправить данные флажка со всех страниц в формате данных из шаблона для просмотра в django - PullRequest
0 голосов
/ 30 января 2020

У меня есть шаблон данных в моем шаблоне django, в котором рядом с каждой строкой есть флажок для отправки данных строки в функцию представления для массового обновления модели django. Но проблема в том, что если несколько строк находятся на одной странице в разбивке по страницам, то я могу точно отправить данные, НО, если я выберу строку 2 со страницы 1 и строку 5 со страницы 3, только значение строки со страницы 3 будет отправлено в функцию просмотра. .!

ШАБЛОН. HTML

{% block jquery %}
<script type="text/javascript" class="init">
    $(document).ready( function ($) {
        var $submit = $("#updiv").hide(),
            $cbs = $('input[name="updelegate"]').click(function() {
                $submit.toggle( $cbs.is(":checked") );
            });
       $('#myTable').DataTable({
            dom: 'lBfrtip',
            "pageLength": 1,
            "language": {
              "emptyTable": "No Delegates Available",
              "sSearch": "Search Delegates: ",
              "info": " Showing _START_-_END_ out of Total _TOTAL_ Delegates",

            }
        });
    });



</script>
{% endblock %}
<form id="myForm" action="{% url 'mass-delegates' %}" method="POST">
                        {% csrf_token %}
                        <table id="myTable" class="table table-striped table-bordered" style="width:100%">
                            <thead class="thead-dark">
                            <tr>
                                <th></th>
                                <th scope="col">#</th>
                                <th scope="col">Name</th>
                                <th scope="col">Email</th>
                                <th scope="col">Phone</th>
                                <th scope="col">Company</th>
                                <th scope="col">Designation</th>
                                <th scope="col">Address</th>
                                <th scope="col">City</th>
                                <th></th>
                                <th></th>
                            </tr>
                            </thead>
                            <tbody>
                            {% for del in delegates %}
                            <tr>
                                <td>
                                    <label class="container">
                                        <input type="checkbox" id="updelegate" name="updelegate"
                                               value="{{ del.id }}">
                                        <span class="checkmark"></span>
                                    </label>
                                </td>
                                <td>{{ del.id }}</td>
                                <td>{{ del.first_name }} {{ del.last_name }}</td>
                                <td>{{ del.email }}</td>
                                <td>{{ del.phone }}</td>
                                <td>{{ del.company }}</td>
                                <td>{{ del.designation }}</td>
                                <td>{{ del.address }}</td>
                                <td>{{ del.city }} ({{ del.pincode }})</td>
                                <td>
                                    <a href="{% url 'delegate' dataset_id=del.dataset_id %}">View</a>
                                </td>
                                <td>
                                    <a href="{% url 'edit-delegate' id=del.id %}">Edit</a>
                                </td>
                            </tr>
                            {% endfor %}
                            </tbody>
                        </table>
                        <div id="updiv">
                            <select name="eventid">
                                {% for ev in events %}
                                <option value="{{ ev.id }}">{{ ev.name }}</option>
                                {% endfor %}
                            </select>
                            <input type="submit" onclick="return confirm('Confirm Adding to Event?');" class="upbtn"
                                   name="update" value="Add to Event"/>
                        </div>
                    </form>

VIEW.PY

def mass_delegates(request):
    if request.method == 'POST':
        toupdate = request.POST.getlist('updelegate')
        eventid = request.POST.get('eventid')
        array_length = len(toupdate)
        for i in range(array_length):
            if not EventDelegate.objects.filter(event_id=eventid, delegate_id=toupdate[i]).exists():
                EventDelegate.objects.create(event_id=eventid, delegate_id=toupdate[i])

        return event_det(request, eventid)

1 Ответ

0 голосов
/ 30 января 2020

Вместо использования флажков вы можете напрямую использовать атрибут select в API Datatables. Отметьте Выбор строк в таблицах данных

Более того, поскольку вы хотите выбрать несколько строк одновременно, вы можете рассмотреть возможность проверки Multi Select строк в таблицах данных out

Вы можете добавить идентификатор в 0-й столбец, затем

dataTable = $(.selector).Datatable() 

dataTable.columns([0]).visible(false);

Вы можете скрыть столбец таким образом, и тогда, когда вы отправляете запрос, у вас все еще есть свой идентификатор

...