Search code examples
htmldjangodjango-tables2

django-tables2 add button per row


I'm rendering a queryset with django-tables 2 but since the table is rendered at once I can't manage the following: Firstly, I should mention that the number of rows of the table is different with each queryset so I don't know the exact number of them in advance. What I need, is to have one button per row that loads the retrieved object inside the fields of a form. I render the table with the default way:

{% load render_table from django_tables2 %}
{% render_table table %} 

When I try to iterate over the rows of the tables I get the error 'table is not iterable'.

So how can I add one button per row?


Solution

  • You can create in your table a template column, this will render something, a button for example:

    class MyTables(tables.Table):
      ...
      my_column = tables.TemplateColumn(verbose_name=_('My Column'),
                                        template_name='app/my_column.html',
                                        orderable=False) # orderable not sortable
    

    In the template my_column the row is in the variable record:

    {{ record.my_field }}