在我的 Django 项目中,我需要有哪些列是动态的并且取决于数据库中的内容的表。所以我在这里找到了一个解决方案,它可以工作,但有一点问题。这是我动态扩展的带有表的类:
class ClientsTable(tables.Table):
class Meta:
model = Client
attrs = {"class": "paleblue", "orderable":"True", "width":"100%"}
fields = ('name',)
def __init__(self, *args, **kwargs):
super(ClientsTable, self).__init__(*args, **kwargs)
self.counter = itertools.count()
def render_row_number(self):
return '%d' % next(self.counter)
def render_id(self, value):
return '%s' % value
这是扩展类的方法:
def define_table(roles):
attrs = dict((r.name, tables.Column() for r in roles)
klass = type('DynamicTable', (ClientsTable,), attrs)
return klass
当我像这样在views.py中创建一个表时:
table = define_table(roles)(queryset)
该表显示了我想要的列,但在 html 代码中我看到它忽略了 attrs:
{"class": "paleblue", "orderable":"True", "width":"100%"}
所以淡蓝色没有css样式,这对我很重要。我觉得它可能与 Meta 类有关,但字段和模型正在工作,所以我不知道为什么 attrs 没有。