Вы можете просто сделать что-то вроде этого:
id = tables.CheckBoxColumn()
Таким образом, столбец будет отображаться следующим образом.
<input type="checkbox" name="id" value="X">
где X будет значением поля id.
Теперь более полный ответ:
Вы можете добавить td__input
, чтобы переопределить некоторые значения по умолчанию, но я не верю, что вы можете установить разные значения для каждого столбца! Проверив источник:
https://github.com/bradleyayers/django-tables2/blob/master/django_tables2/columns/checkboxcolumn.py
вы увидите, что в методе render
в CheckBoxColumn
будет создан AttributeDict, содержащий атрибуты из ввода, td__input и некоторые значения по умолчанию, например:
def render(self, value, bound_column): # pylint: disable=W0221
default = {
'type': 'checkbox',
'name': bound_column.name,
'value': value
}
general = self.attrs.get('input')
specific = self.attrs.get('td__input')
attrs = AttributeDict(default, **(specific or general or {}))
return mark_safe('' % attrs.as_html())
Таким образом, определяемые вами атрибуты будут одинаковыми во всех столбцах, поскольку attrs.as_html просто преобразует записи словаря «x»: «y» в x = y...
Поэтому, если вы хотите иметь полный контроль и делать все, что хотите, со значениями для каждого столбца, просто добавьте подкласс CheckBoxColumn
и переопределите render
(оставлено читателю в качестве упражнения).
Обновить
Кроме того, в вашем собственном методе render
очень хорошо то, что вам не нужно определять те же параметры, что и в базовом методе. Это связано с тем, что django-tables2 использует функцию getargspec, чтобы узнать, какие аргументы ожидает ваш рендеринг, и передать их методу render
. Итак, если вы посмотрите на https://github.com/bradleyayers/django-tables2/blob/master/django_tables2/rows.py вы увидите доступные параметры, которые можно передать в render
вместе с их значениями:
available = {
'value': value,
'record': self.record,
'column': bound_column.column,
'bound_column': bound_column,
'bound_row': self,
'table': self._table,
}
Так, например, вы можете определить свой метод render
следующим образом:
def render(self, value, bound_column, record):
также передать ему запись.
person
Serafeim
schedule
18.12.2013