如何在 django-datatables-view 中定义动态列数

How to define dynamic number of columns in django-datatables-view

我正在使用 django-datatables-view(与 jQuery 插件 DataTables 结合使用)。对于正常使用,我基于 BaseDatatableView 创建了一个基于 class 的视图,并在其中定义了列变量:

class MyCBV(LoginRequiredMixin, BaseDatatableView):
    model = myModel
    columns = ['my_model_column1','my_model_column2']
    ...

现在我想创建一个基于参数的 可变 列数。我可以访问 CBV functions 中的参数,但似乎我无法覆盖列变量。例如,我试图覆盖 get_context_data 函数中的 columns 变量,但 columns 稍后在 render_column 函数中保留其原始值。

有人有解决办法吗?

BaseDatatableView 实现 DatatableMixin,它有一个方法 get_columns,默认实现

def get_columns(self):
    """ Returns the list of columns that are returned in the result set
    """
    return self.columns

您可以覆盖它并在此处传递您的自定义列(使用您的参数)