你可以简单地做这样的事情:
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
默认 = {
'类型':'复选框',
“名称”:bound_column.name,
“价值”:价值
}
一般 = self.attrs.get('输入')
具体 = 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...
因此,如果您想完全控制并对每一列的值做任何您喜欢的事情,只需 subclssCheckBoxColumn
和覆盖render
(留给读者作为练习)。
更新
此外,关于您自己的方法的一个非常好的事情render
是您不需要定义与基本参数相同的参数。这是因为 django-tables2 使用 getargspec 函数来找出您的渲染期望的参数并将它们传递给render
方法。因此,如果您查看https://github.com/bradleyayers/django-tables2/blob/master/django_tables2/rows.py,您将看到可以传递给的可用参数render
及其值是:
可用 = {
“价值”:价值,
'记录': self.record,
“列”:bound_column.column,
'bound_column':bound_column,
'bound_row':自我,
“表”:self._table,
}
因此,例如,您可以定义您的render
方法,例如:
def render(self, value, bound_column, record):
也将记录传递给它。