Django_tables2:根据请求动态隐藏列

2024-10-01 17:34:26 发布

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

我有一个基于模型的表,它有几个字段。我还有两个TemplateColumn,一个用于编辑特定实体,另一个用于删除它。这是我的代码:

class EntitetTable(tables.Table):
    edit = tables.TemplateColumn(template_name='azuriranje/izmena.html',
                            orderable=False, visible=False)
    delete = tables.TemplateColumn(template_name='azuriranje/brisanje.html',
                            orderable=False, visible=False)

    class Meta:
        abstract = True
        attrs = {'class': 'paleblue', }

class TipPredmetaTable(EntitetTable):
    class Meta(EntitetTable.Meta):
        model = models.TipPredmeta

现在,我的系统中有一个用户层次结构,只有记账的用户才能编辑和删除数据。也就是说,我试图在我的视图中实现一个检查来隐藏这两个TemplateColumn

^{pr2}$

但是,我在table.edit.visible = True行中得到以下异常:

Exception Type:  AttributeError
Exception Value: 'TipPredmetaTable' object has no attribute 'edit'

现在,我尝试了以下方法: -首先,我考虑使用字段和排除,但是我不能动态地改变它。 -然后我考虑将所有这些都放到__init__方法中,有效地编辑和删除entitetabel的属性(这个想法是为了解决错误),但是当错误消失时,我的TemplateColumns也消失了。我试着通过字段显示,但没用。我猜超类桌子。桌子,不是那样工作的。在


Tags: namefalsetrue编辑tableshtmltemplateedit
1条回答
网友
1楼 · 发布于 2024-10-01 17:34:26

您可以使用tables.Tableexclude属性来排除不需要的字段。它在创建表实例之后也可以工作。所以你可以这样做。在

首先让列可见(我删除了visible=False):

class EntitetTable(tables.Table):
    edit = tables.TemplateColumn(template_name='azuriranje/izmena.html',
                                 orderable=False)
    delete = tables.TemplateColumn(template_name='azuriranje/brisanje.html',
                                 orderable=False)

然后,根据您的条件,可以排除编辑和删除字段:

^{pr2}$

相关问题 更多 >

    热门问题