如何将 Datatables 插件应用于呈现的 django-tables2?

How to apply Datatables plugin to a rendered django-tables2?

将 Datatables 插件实施到 'Django-tables2' 呈现的 table。

时出现问题

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

我试过按照官方文档的说明直接在模板中指定 'static' 文件路径,但它不起作用。

我正在使用的 HTML 模板继承自 'base' 模板,该模板实现所有 css/js 静态文件并覆盖数据所在的内容块 table 被渲染。

作为参考,我的代码是:

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 %}

尽管数据table 已呈现,但 'datatables' 插件中的某些元素未显示,如 'search' 框、'show xx entries' 框等

Other tables rendered with Datatables plugin

Table rendered with Django-tables2

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

datatables 需要不同的 html 元素。我认为实现一个自定义模板派生自 the supplied templates 添加数据所需的元素tables 是可行的方法。

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

我知道django-datatables-view can directly be used to render table but if you really want to use the features of datatable using the plugins on top of django-table2,你可以这样写table.py中的attrs

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 中使用数据表的理想方式,但玩得开心!