返回BoundColumn
时使用下表,它是纯文本而不是html。
class CarHistoryTable(tables.Table):
edit = tables.LinkColumn(
'Car:update',
kwargs={'pk': A('id')},
orderable=False,
text='Edit'
)
def render_edit(self, record, value, bound_column):
if record.state != Car.NEW:
return ''
return super().render_edit()
理想情况下,我想为不是NEW
州的汽车返回一个空文本。对于其他汽车,我想渲染编辑链接。
答案 0 :(得分:1)
我知道您认为可以致电super().render_edit()
,但那可以
不是这样的。逻辑django-tables2用来决定它应该使用的render-callable,如下所示:
如果在表上定义了方法
render_<columnname>
,则使用它。在任何其他情况下,都会使用您在定义render()
时分配给tables.LinkColumn()
的{{1}}实例的edit
方法。
现在,为了实现你的目标,我会做这样的事情:
CarHistoryTable
这定义了一个自定义列,该列来自现有汽车所需的LinkColumn。 class CarUpdateLinkColumn(tables.LinkColumn):
def render(self, value, record, bound_column):
if record.state != Car.NEW:
return ''
return super().render(value, record, bound_column)
class CarHistoryTable(tables.Table):
edit = tables.CarUpdateLinkColumn(
'Car:update',
kwargs={'pk': A('id')},
orderable=False,
text='Edit'
)
的实施可以调用render()
,因为这种方法确实存在。