如何在Django Tables2中自定义列中相关object的显示文本?
How do I customise the display text of a related object in a column in Django Tables2?
我正在使用 Django Tables 2 显示 object 列表中的一些信息,包括具有相关 object 的列。
我正在尝试更改显示相关 object.
的列中显示的文本
我的 object 是:
工作
class Job(StatusModel):
'''
Model for jobs
'''
STATUS = statuses.JOB_STATUS
start_time = models.DateTimeField(_('time'), default=timezone.now)
pickup_address = models.TextField()
...
destination_address = models.TextField()
...
drivers = models.ManyToManyField(
'Drivers.Driver',
blank=True,
)
...
class Meta:
verbose_name = _('job')
verbose_name_plural = _('jobs')
ordering = ('start_time',)
def __str__(self):
return self.start_time.strftime('%d/%m/%y %H:%M') + ' from ' + self.pickup_address
def get_absolute_url(self):
return reverse('job_view', args=[str(self.id)])
...
Driver
class Driver(StatusModel):
...
current_job = models.ForeignKey(
Job,
on_delete=models.CASCADE,
blank=True,
null=True,
verbose_name=_('Current Job'),
related_name='current_job'
)
...
def __str__(self):
return self.user.get_full_name()
...
我的table:
class DriverStatusListTable(tables.Table):
user = tables.Column(linkify=True, verbose_name=_('Driver'))
...
current_job = tables.Column(linkify=True)
class Meta:
model = Driver
...
我希望 "current_job" 列显示与返回的作业 __str__
表示形式不同的文本 object - 即:
Job.start_time.strftime('%H:%M') + ' to ' + Job.destination_address,
但是如果不更改 Job object.
上的 __str__
方法,我不知道该怎么做
有什么想法吗?
写一个Table.render_foo
自定义值输出。
示例:
class DriverStatusListTable(tables.Table):
user = tables.Column(linkify=True, verbose_name=_('Driver'))
current_job = tables.Column(linkify=True)
class Meta:
model = Driver
<b>def render_current_job(self, value):
return "Use 'value' parameter here and return useful resposne"</b>
我正在使用 Django Tables 2 显示 object 列表中的一些信息,包括具有相关 object 的列。 我正在尝试更改显示相关 object.
的列中显示的文本我的 object 是:
工作
class Job(StatusModel):
'''
Model for jobs
'''
STATUS = statuses.JOB_STATUS
start_time = models.DateTimeField(_('time'), default=timezone.now)
pickup_address = models.TextField()
...
destination_address = models.TextField()
...
drivers = models.ManyToManyField(
'Drivers.Driver',
blank=True,
)
...
class Meta:
verbose_name = _('job')
verbose_name_plural = _('jobs')
ordering = ('start_time',)
def __str__(self):
return self.start_time.strftime('%d/%m/%y %H:%M') + ' from ' + self.pickup_address
def get_absolute_url(self):
return reverse('job_view', args=[str(self.id)])
...
Driver
class Driver(StatusModel):
...
current_job = models.ForeignKey(
Job,
on_delete=models.CASCADE,
blank=True,
null=True,
verbose_name=_('Current Job'),
related_name='current_job'
)
...
def __str__(self):
return self.user.get_full_name()
...
我的table:
class DriverStatusListTable(tables.Table):
user = tables.Column(linkify=True, verbose_name=_('Driver'))
...
current_job = tables.Column(linkify=True)
class Meta:
model = Driver
...
我希望 "current_job" 列显示与返回的作业 __str__
表示形式不同的文本 object - 即:
Job.start_time.strftime('%H:%M') + ' to ' + Job.destination_address,
但是如果不更改 Job object.
__str__
方法,我不知道该怎么做
有什么想法吗?
写一个Table.render_foo
自定义值输出。
示例:
class DriverStatusListTable(tables.Table):
user = tables.Column(linkify=True, verbose_name=_('Driver'))
current_job = tables.Column(linkify=True)
class Meta:
model = Driver
<b>def render_current_job(self, value):
return "Use 'value' parameter here and return useful resposne"</b>