A little late answer but better late than never :)
This is a little tricky, however its not difficult when you get the idea - you actually don't need to change or inherit anything from django-tables2, python provides you with all the tools you need :)
So, the problem is that if you pass a string as the verbose name it is evaluated only once to find out its value and then it's just a static string. What you really need to do is to pass something that would act as a string but its value would be re-evaluated each time.
Well, this is just a normal class that has a __unicode__
method, something for instance like this:
import datetime class Foo: def __unicode__(self): return unicode(datetime.datetime.now())
and then you can do something like that in your table:
class MyTable(tables.Table): koko = tables.Column(verbose_name=unicode(datetime.datetime.now()) ) koko2 = tables.Column(verbose_name=Foo())
The header of the koko column will always have the same value but the header of koko2 will change each time you refresh the page!
Python FTW !