Python 继承和修改“Meta”类
因此,我有一个基本ItemTable,然后是从中继承的许多表。我似乎无法修改元类。我试着正常地包含元类,但它不起作用,然后我在下面找到并实现了它。它以静默方式失败:表仅使用父元类中的列呈现Python 继承和修改“Meta”类,python,django,django-tables2,Python,Django,Django Tables2,因此,我有一个基本ItemTable,然后是从中继承的许多表。我似乎无法修改元类。我试着正常地包含元类,但它不起作用,然后我在下面找到并实现了它。它以静默方式失败:表仅使用父元类中的列呈现 class ItemTable(tables.Table): class Meta: model = Item attrs = {"class":"paleblue"} fields = ('name', 'primary_tech', 'primar
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',)
编辑:如图所示修改代码。我现在得到了一个名称错误,
字段
未定义 您没有向一个元素元组添加,
(逗号)。尝试将ApplicationTable
中的此行Meta.attrs['fields']+=('jira\u bucket\u name')
更改为:
Meta.attrs['fields'] += ('jira_bucket_name',)
如果它没有帮助尝试创建元类外部模型类定义:
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
您可能需要向django tables的作者了解这一点。这不是标准Django的问题。试试:
class ApplicationTable(ItemTable):
class Meta:
model = Application
fields = ItemTable.Meta.fields + ('jira_bucket_name',)
在表中扩展
Meta
会遇到与在普通Django模型中相同的问题。名为Meta
和Metaclass
的类是两件不同的事情。好吧。。。好吧,撇开术语不谈--我一定要研究一下--我做错了什么?很好,但对解决这个问题没有帮助。没有骰子:所有的表仍然只识别父ItemTableMeta。没有错误消息。@ThumbtackTheep这是django表的问题,在我添加到已知错误报告(2年前)的文档中发现了此问题,但尚未得到响应。此操作会自动失败,但不会添加新列。FWIW,这是我第一次尝试扩展Meta
,所以我不知道它与非django-tables2模型相比如何。我这方面有一个令人尴尬的白痴水平,使它无法工作。这是正确的解决方案。谢谢