Change Column Headers in Django Tables 2
Sep 17, 2015 · 1 Min Read · 0 Like · 2 Comments![Change Column Headers in Django Tables 2](/content/images/2020/03/tables_hue4bd0d862dd1a6d563eb6f3c37c81680_2605761_220x0_resize_q75_lanczos.jpg 220w,/content/images/2020/03/tables_hue4bd0d862dd1a6d563eb6f3c37c81680_2605761_440x0_resize_q75_lanczos.jpg 440w,/content/images/2020/03/tables_hue4bd0d862dd1a6d563eb6f3c37c81680_2605761_500x0_resize_q75_lanczos.jpg 500w,/content/images/2020/03/tables_hue4bd0d862dd1a6d563eb6f3c37c81680_2605761_600x0_resize_q75_lanczos.jpg 600w,/content/images/2020/03/tables_hue4bd0d862dd1a6d563eb6f3c37c81680_2605761_640x0_resize_q75_lanczos.jpg 640w,,/content/images/2020/03/tables_hue4bd0d862dd1a6d563eb6f3c37c81680_2605761_720x0_resize_q75_lanczos.jpg 720w,,/content/images/2020/03/tables_hue4bd0d862dd1a6d563eb6f3c37c81680_2605761_1024x0_resize_q75_lanczos.jpg 640w)
Django Tables2 is a package which displays table directly from queryset. It shows column header based on object’s attribute name. But if someone wants to override it, how can he/she do that? Here is a easy solution.
Model class
Suppose we have a model class like this:
class SomeModel(models.Model):
somevalue = models.CharField()
And we want to show table column somevalue to overridenvalue
Table class
class SomeTable(tables.Table):
def __init__(self, *args, overriden_value="",**kwargs):
super().__init__(*args, **kwargs)
self.base_columns['somevalue'].verbose_name = overriden_value
class Meta:
model = models.SomeModel
fields = '__all__'
And the Class Based View:
View class
class SomeView(ListView):
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['sometable'] = SomeTable(SomeModel.objects.all(), overriden_value="overriden value")
return context
And template should render that table like this:
{% load render_table from django_tables2 %}
{% render_table sometable %}
Thats it, we shall be able to see our override table column header.
Last updated: Jul 13, 2024
I won't spam you. Unsubscribe at any time.