是否可以使用django-tables2在表中创建动态列?我有一个模型,其中包含必须在表中的所有列,并且应该在列下的数据都有一个列的外键。
class Data(models.Model):
data = models.CharField()
column = models.ForeignKey(Column)
user = models.ForeignKey(User)
class Column(models.Model):
header = models.CharField()
因此,表的最左列应为User,下一列应该都是Column.objects.all()中的列,然后数据位于具有外键的列对象下。
我希望你能帮忙!
答案 0 :(得分:1)
如果要在运行时而不是在编程时指定表的列,则可以使用以下类:
import django_tables2 as tableslib
class DynamicColumnsTable(tableslib.Table):
def __init__(self, *args, column_specs=(), **kwargs):
bc = type(self.base_columns)(self.base_columns) # clone
for name, column in column_specs:
self.base_columns[name] = column
tableslib.Table.__init__(self, *args, **kwargs) # refers to static spec
type(self).base_columns = bc # restore static spec
用法示例:
import django.shortcuts as shortcuts
import django_tables2 as tableslib
def test(request):
data = [
{"name": "Bobo"},
{"name": "Gogo"},
]
djtable = DynamicColumnsTable(column_specs=( ('name', tableslib.Column()), ),
data=data)
return shortcuts.render(request, 'test.html', {'djtable': djtable})
答案 1 :(得分:0)
表格应如下所示:
class ABC(tables.Table):
user= tables.Column(accessor='user.username')
column= tables.Column(accessor= 'column.header')
data= tables.Column(accessor='data')
class Meta:
model = Data
sequence= ('user', 'column', 'data')
详细信息:http://django-tables2.readthedocs.org/en/latest/#specifying-alternative-data-for-a-column