Добавить дополнительный столбец в таблицы в django_tables2

Я хочу добавить дополнительный столбец, которого нет в моей модели. И я применяю одно из решений на этом сайте к своему проекту. Но это не работает должным образом.

model.py

class Companies(models.Model):

    legal_name      = models.CharField(max_length=120, blank=True)
    co_name         = models.CharField(max_length=120, blank=True)
    client          = models.ForeignKey(Clients, models.SET_NULL, blank=True, null=True)
    tel_no          = models.CharField(max_length=120, blank=True)
    email           = models.EmailField(null=True, blank=True)
    address         = models.TextField(null=True, blank=True)
    contact         = models.CharField(max_length=250, blank=True)
    con_tel_no      = models.CharField(max_length=120, blank=True)
    entity          = models.CharField(max_length=2, null=True)
    yearend         = models.DateField(null=True, blank=True)
    bn              = models.CharField(max_length=9)
    memo            = models.TextField(null=True, blank=True)
    slug            = models.SlugField(null=True, blank=True)

    def t2_due_date(self):
        now_year = datetime.date.today().year
        if self.entity == 'CO':
            yearend_ = DateWidget.decompress(self, self.yearend)
            if yearend_[1] > 6:
                yearend_[2] = now_year + 1
                yearend_[1] -= 6
            else:
                yearend_[2] = now_year
                yearend_[1] += 6
            t2_due = DateWidget.compress(self, yearend_)
        return t2_due

tables.py

class ScheduleTable(tables.Table):
    due_date_col = tables.Column(accessor='t2_due_date', verbose_name='T2 Due Date')

    class Meta:
        attrs = {"class": "paleblue", "width":"100%"}
        fields = ['client','legal_name', 'co_name', 'entity', 'yearend', 'due_date_col']
        model = Companies

Когда я запускаю эту программу, 'due_date_col' всегда пуст. Кажется, что функция ('t2_due_date) не проходит. Есть ли у вас какие-либо подсказки, чтобы решить эту проблему?

1 ответ

Насколько я знаю accessor указывает на связанные объекты, а не на свойства модели, методы и т. д.

То, что вы можете попробовать, это использовать Table.render_{column} как так:

class ScheduleTable(tables.Table):

    def render_due_date_col(self, record):
        return record.t2_due_date()

Посмотрите djanog таблицы официальный документ для получения дополнительной информации.

Другие вопросы по тегам