django-tables2添加模板列,其内容取决于条件

时间:2018-12-02 17:21:13

标签: python django django-tables2

使用

  • Django框架
  • django-tables2

我有一个表,要为其添加2个其他模板列(按钮)。 我只想根据其他列上的条件显示这些按钮。 假设等级为G2,则“编辑/删除”按钮可见或处于活动状态。否则,它们不会显示或禁用。 现在,它的外观如下:

enter image description here

可以在表类中这样做吗?还是我需要写一些精美的jQuery代码?

这是我的桌子。py

import django_tables2 as tables
from .models import Person
from django.urls import reverse_lazy


class PersonTable(tables.Table):

    T1     = '<button type="button" class="btn js-update" update-link="{{ record.get_absolute_url_update }}">update</button>'
    T2     = '<button type="button" class="btn js-delete" delete-link="{{ record.get_absolute_url_delete }}">delete</button>'
    edit   = tables.TemplateColumn(T1)
    delete = tables.TemplateColumn(T2)

    class Meta:
        model = Person
        fields        = ('name','surname','city','grade',)
        template_name = 'django_tables2/bootstrap4.html'

1 个答案:

答案 0 :(得分:1)

我认为您可以尝试这样:

第一个替代TemplateColumn的呈现方法:

class CustomTemplateColumn(tables.TemplateColumn):
    def render(self, record, table, value, bound_column, **kwargs):
         if record.grade == "G2":
             return ''
         return super(CustomTemplateColumn, self).render(record, table, value, bound_column, **kwargs)

然后在Table类中使用它:

class PersonTable(tables.Table):

    T1     = '<button type="button" class="btn js-update" update-link="{{ record.get_absolute_url_update }}">update</button>'
    T2     = '<button type="button" class="btn js-delete" delete-link="{{ record.get_absolute_url_delete }}">delete</button>'
    edit   = CustomTemplateColumn(T1)
    delete = CustomTemplateColumn(T2)

    class Meta:
        model = Person
        fields        = ('name','surname','city','grade',)
        template_name = 'django_tables2/bootstrap4.html'