我如何在Django Tables2的列中自定义相关对象的显示文本?

问题描述 投票:0回答:1

我正在使用Django Tables 2从对象列表中显示一些信息,包括带有相关对象的列。我正在尝试更改显示相关对象的列中显示的文本。

我的对象是:

工作

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)])

    ...

驱动程序

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()

    ...

我的桌子:

class DriverStatusListTable(tables.Table):

    user = tables.Column(linkify=True, verbose_name=_('Driver'))
...
    current_job = tables.Column(linkify=True)

    class Meta:
        model = Driver
...

我希望“ current_job”列显示与Job对象的返回__str__表示形式不同的文本-即:Job.start_time.strftime('%H:%M') + ' to ' + Job.destination_address,但是如果不更改Job对象上的__str__方法,我将无法解决该问题。

有什么想法吗?

django django-tables2
1个回答
1
投票

写入Table.render_foo以自定义值输出。示例:

© www.soinside.com 2019 - 2024. All rights reserved.