django-tables2 Добавление столбца шаблона, содержание которого зависит от условия - PullRequest
0 голосов
/ 02 декабря 2018

Работа с

  • Django framework
  • django-tables2

У меня есть таблица, для которой я добавляю 2 дополнительных столбца шаблона (кнопки).Я хочу отображать только эти кнопки в зависимости от условий в другом столбце.Допустим, оценка - G2, тогда кнопки редактирования / удаления видны или активны.Иначе они не отображаются или отключены.Вот как это выглядит сейчас:

enter image description here

Возможно ли это сделать в табличном классе?Или мне нужно написать какой-нибудь причудливый код jquery?

Вот мои таблицы.py

import django_tables2 as tables
from .models import Person
from django.urls import reverse_lazy


class PersonTable(tables.Table):

    T1     = '<button type="button" class="btn js-update" update-link="{{ record.get_absolute_url_update }}">update</button>'
    T2     = '<button type="button" class="btn js-delete" delete-link="{{ record.get_absolute_url_delete }}">delete</button>'
    edit   = tables.TemplateColumn(T1)
    delete = tables.TemplateColumn(T2)

    class Meta:
        model = Person
        fields        = ('name','surname','city','grade',)
        template_name = 'django_tables2/bootstrap4.html'

1 Ответ

0 голосов
/ 02 декабря 2018

Я думаю, вы можете попробовать так:

Первое переопределение * Метод визуализации TemplateColumn:

class CustomTemplateColumn(tables.TemplateColumn):
    def render(self, record, table, value, bound_column, **kwargs):
         if record.grade == "G2":
             return ''
         return super(CustomTemplateColumn, self).render(record, table, value, bound_column, **kwargs)

Затем используйте его в классе Table:

class PersonTable(tables.Table):

    T1     = '<button type="button" class="btn js-update" update-link="{{ record.get_absolute_url_update }}">update</button>'
    T2     = '<button type="button" class="btn js-delete" delete-link="{{ record.get_absolute_url_delete }}">delete</button>'
    edit   = CustomTemplateColumn(T1)
    delete = CustomTemplateColumn(T2)

    class Meta:
        model = Person
        fields        = ('name','surname','city','grade',)
        template_name = 'django_tables2/bootstrap4.html'
...