所以我有一个基础ItemTable,然后是一些继承它的表。我似乎无法修改Meta类。我尝试通常只包含元类,但它没有用,然后我找到了this bug report并在下面实现了它。它以静默方式失败:表格仅使用父元类中的列进行渲染。
class ItemTable(tables.Table):
class Meta:
model = Item
attrs = {"class":"paleblue"}
fields = ('name', 'primary_tech', 'primary_biz', 'backup_tech', 'backup_biz')
class ApplicationTable(ItemTable):
def __init__(self, *args, **kwargs):
super(ApplicationTable, self).__init__(*args, **kwargs)
class Meta(ItemTable.Meta):
model = Application
fields += ('jira_bucket_name',)
编辑:代码修改如图所示。我现在得到一个未定义fields
的NameError。
答案 0 :(得分:4)
您没有将,
(逗号)添加到单元素元组中。尝试将Meta.attrs['fields'] += ('jira_bucket_name')
中的这一行ApplicationTable
更改为:
Meta.attrs['fields'] += ('jira_bucket_name',)
如果它没有帮助尝试创建Meta类外部模型类定义:
class ItemTableMeta:
model = Item
attrs = {"class":"paleblue"}
fields = ('name', 'primary_tech', 'primary_biz', 'backup_tech', 'backup_biz')
class ApplicationTableMeta(ItemTableMeta):
model = Application
fields = ItemTableMeta.fields + ('jira_bucket_name',)
class ItemTable(tables.Table):
#...
Meta = ItemTableMeta
class ApplicationTable(ItemTable):
#...
Meta = ApplicationTableMeta
答案 1 :(得分:1)
尝试:
class ApplicationTable(ItemTable):
class Meta:
model = Application
fields = ItemTable.Meta.fields + ('jira_bucket_name',)
在表格中扩展Meta
会有同样的问题,就像在普通的Django模型中一样。
答案 2 :(得分:0)
您可能需要使用django-tables作者来解决这个问题。这不是标准Django的问题。