Djangotables2:更改多个列的属性

2024-10-17 00:24:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我不知道如何在一个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

这引发了:

can't set attribute

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

^{pr2}$

你有什么想法吗?在


Tags: columnsselffalsefor属性initargscolumn
1条回答
网友
1楼 · 发布于 2024-10-17 00:24:35

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

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

相关问题 更多 >