数据表未在django-datatable-view中填充数据 [英] Data table not populating data in django-datatable-view
问题描述
我已经开始尝试测试 django- datatable-view .
我收到一个JS错误,提示Uncaught TypeError:$$.each不是一个函数.尽管遵循图书馆网站上的代码,但jQuery是在datatableview.js之前加载的.
models.py
from django.db import models
class Post(models.Model):
title= models.CharField(max_length=150)
body = models.TextField()
created = models.DateField()
views.py
from datatableview.views import DatatableView
from .models import Post
class MyView(DatatableView):
model = Post
datatable_options = {
'columns': [
'title',
'body',
'created',
]
}
urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.MyView.as_view(), name='myview'),
]
post_list.html
{% load static %}
<!-- myapp/mymodel_list.html -->
<!-- Load dependencies -->
<script src="https://code.jquery.com/jquery-3.3.1.min.js"
integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://cdn.datatables.net/1.10.19/css/jquery.dataTables.min.css">
<script type="text/javascript" charset="utf8" src="https://cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js"></script>
<!-- Load js for initializing tables via their server-side options -->
<script type="text/javascript" charset="utf8" src="{% static 'js/datatableview.js' %}"></script>
<script type="text/javascript">
$(function(){
datatableview.initialize('.datatable');
});
</script>
<!-- Render the table skeleton, includes the .datatable class for the on-ready initializer. -->
{{ datatable }}
控制台错误:
query-3.3.1.min.js:2 jQuery.Deferred exception: $$.each is not a
function TypeError: $$.each is not a function
at Object.initialize
(http://127.0.0.1:8000/static/js/datatableview.js:20:12)
at HTMLDocument.<anonymous> (http://127.0.0.1:8000/:17:23)
at l (https://code.jquery.com/jquery-3.3.1.min.js:2:29375)
at c (https://code.jquery.com/jquery-3.3.1.min.js:2:29677)
undefined
w.Deferred.exceptionHook @ jquery-3.3.1.min.js:2
c @ jquery-3.3.1.min.js:2
setTimeout (async)
(anonymous) @ jquery-3.3.1.min.js:2
u @ jquery-3.3.1.min.js:2
fireWith @ jquery-3.3.1.min.js:2
fire @ jquery-3.3.1.min.js:2
u @ jquery-3.3.1.min.js:2
fireWith @ jquery-3.3.1.min.js:2
ready @ jquery-3.3.1.min.js:2
_ @ jquery-3.3.1.min.js:2
jquery-3.3.1.min.js:2 Uncaught TypeError: $$.each is not a function
at Object.initialize (datatableview.js:20)
at HTMLDocument.<anonymous> ((index):17)
at l (jquery-3.3.1.min.js:2)
at c (jquery-3.3.1.min.js:2)
仅在不填充数据的情况下呈现表头.关于可能发生的事情的任何想法.正如我所说的,这里的大多数答案都提到并没有首先加载jquery,但这显然不是上面代码中的情况.
我遇到了完全相同的问题.因此,而不是
<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"]
您必须要做的(使用DatatableView中的模型或query_set:
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和此版本的数据表: 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('Related Field get invalid lookup:{}'.format(lookup_name))" 但是,即使我添加了要在其上搜索的列,例如"title__name",在搜索中仍会显示警告:
DataTables警告:表ID = DataTables_Table_0-Ajax错误.有关此错误的更多信息,请参见 http://datatables.net/tn/7 >
I've started a new Django project with trying to test out django-datatable-view.
I'm getting a JS error saying Uncaught TypeError: $$.each is not a function. Although following the code on the library's website jQuery is being loaded before datatableview.js.
models.py
from django.db import models
class Post(models.Model):
title= models.CharField(max_length=150)
body = models.TextField()
created = models.DateField()
views.py
from datatableview.views import DatatableView
from .models import Post
class MyView(DatatableView):
model = Post
datatable_options = {
'columns': [
'title',
'body',
'created',
]
}
urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.MyView.as_view(), name='myview'),
]
post_list.html
{% load static %}
<!-- myapp/mymodel_list.html -->
<!-- Load dependencies -->
<script src="https://code.jquery.com/jquery-3.3.1.min.js"
integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://cdn.datatables.net/1.10.19/css/jquery.dataTables.min.css">
<script type="text/javascript" charset="utf8" src="https://cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js"></script>
<!-- Load js for initializing tables via their server-side options -->
<script type="text/javascript" charset="utf8" src="{% static 'js/datatableview.js' %}"></script>
<script type="text/javascript">
$(function(){
datatableview.initialize('.datatable');
});
</script>
<!-- Render the table skeleton, includes the .datatable class for the on-ready initializer. -->
{{ datatable }}
console error:
query-3.3.1.min.js:2 jQuery.Deferred exception: $$.each is not a
function TypeError: $$.each is not a function
at Object.initialize
(http://127.0.0.1:8000/static/js/datatableview.js:20:12)
at HTMLDocument.<anonymous> (http://127.0.0.1:8000/:17:23)
at l (https://code.jquery.com/jquery-3.3.1.min.js:2:29375)
at c (https://code.jquery.com/jquery-3.3.1.min.js:2:29677)
undefined
w.Deferred.exceptionHook @ jquery-3.3.1.min.js:2
c @ jquery-3.3.1.min.js:2
setTimeout (async)
(anonymous) @ jquery-3.3.1.min.js:2
u @ jquery-3.3.1.min.js:2
fireWith @ jquery-3.3.1.min.js:2
fire @ jquery-3.3.1.min.js:2
u @ jquery-3.3.1.min.js:2
fireWith @ jquery-3.3.1.min.js:2
ready @ jquery-3.3.1.min.js:2
_ @ jquery-3.3.1.min.js:2
jquery-3.3.1.min.js:2 Uncaught TypeError: $$.each is not a function
at Object.initialize (datatableview.js:20)
at HTMLDocument.<anonymous> ((index):17)
at l (jquery-3.3.1.min.js:2)
at c (jquery-3.3.1.min.js:2)
Only the table header is being rendered without the data being populated. Any ideas as to what may be going on. As I said most of the answers on here are mentioning that jquery isn't being loaded first but this clearly isn't what is going on in the code above.
I had exactly the same issue. So instead of
<script type="text/javascript">
$(function(){
datatableview.initialize('.datatable');
});
</script>
We have to init datatable so:
<script type="text/javascript">
var opts = {};
var datatable = datatableview.initialize($('.datatable'), opts);
var table = datatable.api();
</script>
And in your views.py, instead of
class MyDatatableView(DatatableView):
model = Revenue
columns = ["title", "body", "created"]
search_fields = ["title", "body"]
You have to do (with the model or the query_set in the DatatableView:
class MyDatatable(Datatable):
class Meta:
columns = ["title", "body", "created"]
search_fields = ["title", "body"]
class MyDatatableView(DatatableView):
model = Revenue
datatable_class = MyDatatable
But then I get the following js essor, any idea? I'm using jQuery 3.3.1 and this version of 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)
I just found the reason, the api call must be api and not api() because the () are added in the datatableview.js
var table = datatable.api;
My new issue is the search, it returns a 500 server error wichi is "FieldError('Related Field got invalid lookup: {}'.format(lookup_name))" But even if I add the column on which I want to search like "title__name", I still have the alert in the search stating:
DataTables warning: table id=DataTables_Table_0 - Ajax error. For more information about this error, please see http://datatables.net/tn/7
这篇关于数据表未在django-datatable-view中填充数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!