How to render button in Django base table?
Assume that you have a table as defined below
class CustomerTable(BaseTable):
pk = ToggleColumn()
name = tables.LinkColumn('customers:customer', args=[Accessor('customer.id')])
class Meta(BaseTable.Meta):
model = Customer
fields = ('pk', 'name', 'city', 'state' , 'phone')
Now assume you would like to display a button next to the phone
we can do it as below
class CustomerTable(BaseTable):
pk = ToggleColumn()
name = tables.LinkColumn('customers:customer', args=[Accessor('customer.id')])
edit_button = tables.Column(empty_values=())
class Meta(BaseTable.Meta):
model = Customer
fields = ('pk', 'name', 'city', 'state' , 'phone', 'edit_button')
def render_edit_button(self, record):
rendered_item = format_html(
"<a href='{url}' class='btn btn-primary' role='button'>Edit</a>",
url= reverse('users:user_edit', kwargs={'id':record.id})
)
return rendered_item

