Search code examples
pythondjangodatatabledatatablesdjango-datatable

add link or any html tag to column in django-datatables-view


I've got django-datatables-view looking like this:

class OrderListJson(BaseDatatableView):
    model = Flat
    columns = ['id', 'flat_price', 'flat_house.house_block.block_name']
    order_columns = ['flat_price', 'flat_house.house_block.block_name']
    max_display_length = 100

    def filter_queryset(self, qs):
        search = self.request.GET.get(u'search[value]', None)
        if search:
            qs = qs.filter(flat_price__lte=search)
        return qs

How to wrap 'flat_house.adress' with <a> or any other html-tag? For example,<a href="{% url 'id' %}". Right now I only show the data from the column in a <td> tag.

My html-template looks like this:

<table id="datatabletest" class="table table-striped table-bordered" cellspacing="0">
            <thead>
              <tr>
                <th>id</th>
                <th>price</th>
                <th>adress</th>
              </tr>
            </thead>
            <tfoot>
              <tr>
                <th>id</th>
                <th>price</th>
                <th>adress</th>
              </tr>
            </tfoot>
          </table>

Solution

  • check this. django-datatables-view

    you can use render_column method for this.

        def render_column(self, row, column):
            # i recommend change 'flat_house.house_block.block_name' to 'address'
            if column == 'address':
                return '<a href="%s">link</a>' % row.flat_house.house_block.block_name
            else:
                return super(OrderListJson, self).render_column(row, column)