如何将Datatables插件应用于渲染的django-tables2?

时间:2019-01-19 20:03:36

标签: datatables-1.10 django-tables2

将数据表插件实现到“ Django-tables2”呈现表的问题。

我是Django的初学者;我正在开发一个将数据上传到数据库的应用程序(postgresql),寻找通过普通django CVB渲染大量数据表的高时间解决方案,我发现django-tables2。 我已经能够实现它并显示渲染表(对加载速度有重要改进),此外,对于我的所有表,我都实现了“ Datatables”插件和一些聚合,但是我并没有理解如何使它们与之兼容。用django-tables2渲染的表,就像我所有其他数据表一样(不是django-tables2渲染的);直到目前唯一可以部分工作的部分是CSS,但是响应和colReorder不起作用。

如官方文档所述,我试图直接在模板中指定“静态”文件路由,但它不起作用。

我使用的HTML模板继承了一个“基本”模板,该模板实现了所有css / js静态文件,并覆盖了内容块(在该块中呈现数据表的位置)。

作为参考,我的代码是:

Views.py

class Data_t_zq70(tables.Table):
    class Meta:
        model = datos
        attrs = {
            'class': 'table table-sm text-center table-striped table-
bordered table-hover id=dataTable'}
        fields = ['Insp_Lot', 'Description', 'Date', 'Material',
        'Batch', 'Mean_Valuation', 'Mean', 'Lower_Limit', 'Target',
        'Upper_Limit', 'Delvry_Quantity']
per_page = 10

class zq_70(LoginRequiredMixin, SingleTableView):
    model = datos
    table_class = Data_t_zq70
    template_name = 'data_list_zq70.html'
    login_url = 'base:login'

HTML Template:

{% extends 'base/base.html' %}
{% load static %}
{% load django_tables2 %}
{% block contenido %}
<div class="panel panel-info">
    <div class="panel-heading">
        <a href="{% url 'data:data_upload' %}" class="btn btn-
               info"><span class="fa fa-plus-circle"> <strong>
                              Cargar datos</strong></span></a>
    </div>
    <div class="panel-body">
                    {% render_table table %}
    </div>
</div>
{% endblock contenido %}

尽管呈现了数据表,但未显示“数据表”插件中的某些元素,例如“搜索”框,“显示xx条目”框等。

Other tables rendered with Datatables plugin

Table rendered with Django-tables2

2 个答案:

答案 0 :(得分:0)

与django-tables2提供的表模板相比,

datatables需要使用不同的html元素。我认为实现自定义模板是从the supplied templates中添加数据表所需元素的一种方法来实现的。

django-tables2可能不是呈现datatables-tables的最佳解决方案,您是否研究过django-datatables-view

答案 1 :(得分:0)

我知道django-datatables-view可以直接用于呈现表格,但是如果您真的想使用datatable顶部的插件来使用django-table2的功能,则可以这样写attrs中的table.py

from django_tables2 import tables
from .models import MyModel

class MyModelTable(tables.Table):

    class Meta:
        model = MyModel

        # This is a hack for using datatable at the frontend
        attrs = {
            'id' : 'example',  #Rename the value to match with datatable id
            'class': 'display', #Change this class value according to the documentation
            'style': 'width:100%'
            } 

并将数据包特定的css / js包含到您的html模板中。

再次,这绝对不是在Django中使用数据表但玩得开心的理想方法!