繁体   English   中英

Django-tables2:更改__init __()中多个列的属性

[英]Django-tables2: Change attribute for multiple columns in __init__()

我不知道如何在for循环中更改多列的属性。

我想将orderable=False设置为多列。 唯一有效的方法是显式定义所有这些列,以便可以向构造函数添加orderable=False

class PizzaTable(tables.Table):

    class Meta:
        template_name = 'django_tables2/bootstrap-responsive.html'
        model = Pizza
        fields = ['created', 'ham', 'olives', 'corn', 'price',]

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        unorderable_columns = ['ham', 'olives', 'corn',]
        for column in unorderable_columns:
            self.columns[column].orderable = False

这引起了:

无法设置属性

它必须能够以某种方式做到这一点,否则我必须指定所有这些列:

ham = tables.Column(accessor='ham',orderable=False)

你有什么想法?

self.columns包含BoundColumn实例。 它们具有一些其他知识(例如,它们在使用它们的表中的属性名称),并通过self.column引用实际定义的Column实例。 它们还通过一个无setter的属性公开了该列的orderable属性,因此会出现错误。 为了动态更改该属性,必须在基础列上设置属性:

 self.columns[column].column.orderable = False
 # instead of 
 # self.columns[column].orderable = False

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM