Reputation: 331
How do I change the column title for a foreign value in django-tables2?
Model
class Employer(models.Model):
name = models.CharField(verbose_name='Name', max_length=16)
class Employee(models.Model):
name = models.CharField(verbose_name='Name', max_length=16)
employer = models.ForeignKey(Employer, verbose_name='Employer')
Table
class EmployeeTable(tables.Table)
class Meta:
model = EmployeeTable
fields = ('name', 'employer.name')
Output
Name | Name
Bill | Steve
I would like to override the default column headers to provide more meaningful information.
Preferred output
Employee name | Employer name
Bill | Steve
Table (not working)
class EmployeeTable(tables.Table)
name = tables.Column(verbose_name='Employee name') # <-- Works!
employer.name = tables.Column(verbose_name='Employer name') # <-- Doesn't work!
class Meta:
model = EmployeeTable
fields = ('name', 'employer.name')
Upvotes: 0
Views: 1164
Reputation: 331
I've found a solution. You have to use an Accessor
.
from django_tables2.utils import Accessor
class EmployeeTable(tables.Table)
name = tables.Column(verbose_name='Employee name')
employer_name = tables.Column(verbose_name='Employer name', orderable=False, accessor=Accessor('employer.name'))
class Meta:
model = EmployeeTable
fields = ('name', 'employer_name')
Upvotes: 2