Django/Python - Datapicker и данные с сервера
Я некоторое время пытаюсь понять, как сделать подборщик данных, который использует moment.js (сайт: http://www.daterangepicker.com), и подключить его к моей базе данных, которая отображается таблицей, а данные отображаются с сервера в виде цикла, и по какой-то причине я не могу заставить его работать.
Возможно, это просто невозможно сделать, у меня больше нет сил, поэтому я спрашиваю здесь, может ли кто-нибудь помочь мне, как это можно сделать.
Мне нужно сделать "datapicker", который будет иметь диапазон, выбранный клиентом, и будет автоматически фильтровать базу данных, и отображать таблицу только со строками, которые соответствуют запросу.
test-table.js
import moment from "moment";
$(document).ready(function() {
$(function() {
var start = moment("2022-01-01 12:34:16");
var end = moment("2022-03-03 10:08:07");
function cb(start, end) {
$('#reportrange span').html(start.format('MMMM D, YYYY') + ' - ' + end.format('MMMM D, YYYY'));
}
$('#reportrange').daterangepicker({
startDate: start,
endDate: end,
ranges: {
'Today': [moment(), moment()],
'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
'Last 7 Days': [moment().subtract(6, 'days'), moment()],
'Last 30 Days': [moment().subtract(29, 'days'), moment()],
'This Month': [moment().startOf('month'), moment().endOf('month')],
'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')]
}
}, cb);
cb(start, end);
});
$('#reportrange').on('apply.daterangepicker', function(ev, picker) {
var start = picker.startDate;
var end = picker.endDate;
$.fn.dataTable.ext.search.push(
function(settings, data, dataIndex) {
var min = start;
var max = end;
var startDate = new Date(data[1]);
if (min == null && max == null) {
return true;
}
if (min == null && startDate <= max) {
return true;
}
if (max == null && startDate >= min) {
return true;
}
if (startDate <= max && startDate >= min) {
return true;
}
return false;
}
);
table.draw();
$.fn.dataTable.ext.search.pop();
});
var table = $('#bank-operation-list').DataTable({
responsive: true
});
});
Таблица html:
<span></span> <b class="caret"></b>
</div>
<table style="width: 100%;" id="bank-operation-list" class="table table-hover table-striped table-bordered dataTable dtr-inline">
<thead>
<tr>
<th>Klient</th>
<th>Data dodania</th>
<th>Typ operacji</th>
<th>Kwota</th>
<th>Status</th>
<th>Akcja</th>
</tr>
</thead>
<tbody>
{% for c in operation %}
<tr>
<td>{{ c.client.name }} {{ c.client.lastname }}</td>
<td>{{ c.date }}</td>
<td>{{ c.type }}</td>
<td>€ {{ c.cash }}</td>
<td>{{ c.status }}</td>
<td>
<form method="POST">
{% csrf_token %}
<input type="hidden" value="{{ c.bank.id }}" name="bank-id">
<button type="submit" class="mb-2 mr-2 btn btn-shadow btn-success">Check
</button>
</form>
</td>
{% endfor %}
</tr>
</tbody>
<tfoot>
</tfoot>
</table>
</div>```
The table itself is generated from data-table:
table.js
```// Datatables
$( document ).ready(function() {
setTimeout(function () {
$('#bank-operation-list').DataTable({
responsive: true
});
}, 1);
});