django-tables2 添加模板列,内容取决于条件
django-tables2 Adding template column, which content depends on condition
与
合作
- Django 框架
- django-tables2
我有一个 table,我为其添加了 2 个额外的模板列(按钮)。
我只想根据其他列的条件显示这些按钮。
假设等级为 G2,则 edit/delete 按钮可见或处于活动状态。否则它们不会显示或禁用。
这是它现在的样子:
在 table class 中可以这样做吗?或者我需要写一些花哨的 jquery 代码吗?
这是我的 tables.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'
我想你可以这样试试:
首先覆盖 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中使用它:
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'
与
合作- Django 框架
- django-tables2
我有一个 table,我为其添加了 2 个额外的模板列(按钮)。 我只想根据其他列的条件显示这些按钮。 假设等级为 G2,则 edit/delete 按钮可见或处于活动状态。否则它们不会显示或禁用。 这是它现在的样子:
在 table class 中可以这样做吗?或者我需要写一些花哨的 jquery 代码吗?
这是我的 tables.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'
我想你可以这样试试:
首先覆盖 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中使用它:
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'