Передайте дополнительные параметры в django_table2 TemplateColumn - PullRequest
0 голосов
/ 13 июня 2018

В моем проекте django у меня есть много таблиц, которые возвращают модели.Последний столбец - это в основном столбец действий, где пользователи могут редактировать или удалять экземпляр.Как мне продолжить, если я хочу передать дополнительные аргументы в TemplateColumn, если в некоторых таблицах я хочу кнопку редактирования и удаления, а в других таблицах мне нужна только кнопка редактирования и информации?Я хочу использовать тот же template.html, но с условиями в нем.Вот что у меня в Таблице:

import django_tables2 as tables
from select_tool.models import DefactoCapability

class DefactoCapabilityTable(tables.Table):

    my_column = tables.TemplateColumn(verbose_name='Actions', template_name='core/actionColumnTable.html')

    class Meta:
         model = DefactoCapability
         template_name = 'django_tables2/bootstrap-responsive.html'
         attrs = {'class': 'table table-xss table-hover'}
         exclude = ( 'body', )
         orderable = False

А как мне проверить перманент на действия, чтобы отобразить кнопку или нет?

1 Ответ

0 голосов
/ 13 июня 2018

Цитирование TemplateColumn документов

Объект шаблона создается [...] и отображается с контекстом, содержащим:

  • record - запись данных для текущей строки
  • value - значение из записи, соответствующее текущему столбцу
  • default - соответствующее значение по умолчанию для использования в качестве запасного варианта
  • row_counter - Номер строки, в которой отображается эта ячейка.
  • любые переменные контекста, передаваемые с помощью аргумента extra_context TemplateColumn.

Таким образом, вы можете сделать что-то вроде этого:

my_column = tables.TemplateColumn(
    template_name='core/actionColumnTable.html',
    extra_context={
        'edit_button': True,
    }
)

Контекст также содержит полный контекст шаблона, из которого вызывается {% render_table %}.Так что если у вас 'django.template.context_processors.request' в вашем context_processors, вы можете получить доступ к текущему пользователю, используя {{ request.user }}.

...