Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 继承和修改“Meta”类_Python_Django_Django Tables2 - Fatal编程技术网

Python 继承和修改“Meta”类

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

因此,我有一个基本ItemTable,然后是从中继承的许多表。我似乎无法修改元类。我试着正常地包含元类,但它不起作用,然后我在下面找到并实现了它。它以静默方式失败:表仅使用父元类中的列呈现

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模型相比如何。我这方面有一个令人尴尬的白痴水平,使它无法工作。这是正确的解决方案。谢谢