У меня была точно такая же проблема.Поэтому вместо
<script type="text/javascript">
$(function(){
datatableview.initialize('.datatable');
});
</script>
мы должны инициализировать данные так:
<script type="text/javascript">
var opts = {};
var datatable = datatableview.initialize($('.datatable'), opts);
var table = datatable.api();
</script>
И в вашем views.py вместо
class MyDatatableView(DatatableView):
model = Revenue
columns = ["title", "body", "created"]
search_fields = ["title", "body"]
Вы должны сделать(с моделью или набором query_set в DatatableView:
class MyDatatable(Datatable):
class Meta:
columns = ["title", "body", "created"]
search_fields = ["title", "body"]
class MyDatatableView(DatatableView):
model = Revenue
datatable_class = MyDatatable
Но тогда я получаю следующий js essor, любая идея? Я использую jQuery 3.3.1 и эту версию datatable: http://cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js
Uncaught TypeError: datatable.api is not a function
at HTMLDocument.<anonymous> (datatable:187)
at c (jquery.min.js:3)
at Object.fireWith [as resolveWith] (jquery.min.js:3)
at Function.ready (jquery.min.js:3)
at HTMLDocument.H (jquery.min.js:3)
Я только что нашел причину, вызов API должен быть API, а не API (), потому что () добавляются в datatableview.js
var table = datatable.api;
Моя новая проблема заключается впри поиске он возвращает 500-ю ошибку сервера, которая "FieldError ('Связанное поле получило недопустимый поиск: {}'. format (lookup_name))" Но даже если я добавлю столбец, по которому я хочу выполнить поиск, как"title__name", у меня все еще есть предупреждение в поиске:
Предупреждение DataTables: идентификатор таблицы = DataTables_Table_0 - ошибка Ajax. Для получения дополнительной информации об этой ошибке см. http://datatables.net/tn/7