[Solved]-Custom columns in django_tables2

17πŸ‘

βœ…

I figured it out in the end, it was actually not too hard after all πŸ™‚
So using my example above, in order to add a custom column using a function in the associated model you just use accessors …

# models.py
class MyModel(models.Model):
    my_field = models.TextField()
    my_field_2 = models.IntegerField()

    def my_function(self):
        # Return some calculated value based on the entry
        return my_value

# tables.py
class MyTable(tables.Table):

    my_extra_column = tables.Column(accessor='my_function',
         verbose_name='My calculated value')

    class Meta:
        fields = ['my_field', 'my_field_2', 'my_extra_column']
        model = MyModel

The trouble comes if and when you want to be able to sort this data, because the function won’t translate into any valid field in MyModel. So you could either disable sorting on this column using ordering=False or specify a set using order_by=('field', 'field2')

πŸ‘€DrBuck

Leave a comment