我有一个基于对象列表生成的表,我想再显示一个列(checkboxcolumn),其值将根据我的对象中的某些数据进行设置。我尝试使用随django-tables2附带的CheckBoxColumn,但它只在我的标题中生成一个复选框,所有数据行都显示' - '(带空格的减号)。互联网上关于该特定列类型的信息非常少,因此我找不到任何解决此问题的方法。这是我的表格代码:
class MyTable(ScheduleTable):
checkbox_column = CheckBoxColumn()
class Meta:
order_by = "-end"
我缺少什么?我尝试添加一些属性(如td_input,input或checked参数)但没有任何效果。
丹尼尔
答案 0 :(得分:2)
在使用CheckBoxColumn但未传递任何参数时,我也遇到了此问题。我的表元素没有任何价值,只有<td>-</td>
。对我来说解决的是传递访问器参数。
class MyTable(ScheduleTable):
checkbox_column = CheckBoxColumn(accessor='pk')
答案 1 :(得分:0)
您是否应该使用表格模型来放置数据? 至于将传递给表的值,您可以使用args
from django_tables2.utils import A
class MyTable(ScheduleTable):
checkbox_column = CheckBoxColumn(args=[A('pk')])
class Meta:
model = MyModel
order_by = "-end"
答案 2 :(得分:0)
这也发生在我身上。当我检查单元格中缺少的框时,很明显它正在获取正确的html:
<input type="checkbox" name="select_box" value="59">
因此,我在Chrome开发者工具中摸索了CSS,发现由于高度和宽度而看不到它(我不确定为什么-不是CSS专家)。但是,一旦我将高度和宽度设置为自动或特定的px数量,便可以看到这些框。
在tables.py中,我向td__input attr添加了一个类。从文档中:
参数: attrs(dict):除了
~.Column
支持的 attrs 键之外, 提供以下内容:- ``input`` -- ``<input>`` elements in both ``<td>`` and ``<th>``. - ``th__input`` -- Replaces ``input`` attrs in header cells. - ``td__input`` -- Replaces ``input`` attrs in body cells.
所以我这样添加了attrs
select_box = CustomCheckboxColumn(
accessor ='index',
attrs={
'td__input': {'class':'checkbox_local'},
},
)