Вы можете просто сделать что-то вроде этого:
id = tables.CheckBoxColumn()
Таким образом, колонка будет оказана как этот
<input type="checkbox" name="id" value="X">
где X будет значение поля идентификатора.
Теперь для более полного ответа:
Вы можете добавить 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 будут одинаковыми во всех столбцах, так как attrs.as_html просто преобразует записи 'x': 'y' dict в x = y ...
Итак, если вы хотите иметь полный контроль и делайте все, что вам нравится, со значениями для каждого столбца, просто подписями CheckBoxColumn
и переопределяйте render
(оставляйте в качестве примера для читателя).
Update
Кроме того, очень хорошая вещь о собственном 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):
также передать ему отчет.
Спасибо, я буду делать это таким образом –