我想使用tables.LinkColumn
将多个“项目”添加到同一个单元格。
这样的事情:
column_name = tables.LinkColumn('some_url_edit', args=[A('pk')], attrs={'class':'tbl_icon edit'})
column_name += tables.LinkColumn('some_url_del', args=[A('pk')], attrs={'class':'tbl_icon delete'})
column_name += ...
这甚至可能吗?或者我应该创建自己的表格视图,而不是django-tables
。
谢谢!
答案 0 :(得分:10)
此处有两个选项,可以使用TemplateColumn
,也可以使用render_FOO
方法。
以下是使用TemplateColumn
的示例(您可以看到记录已添加到用于呈现模板的上下文中,因此您可以通过{{1}访问pk
}:
record.pk
使用TEMPLATE = '''
<a href="{% url some_url_edit record.pk %}" class="tbl_icon edit">Edit</a>
<a href="{% url some_url_del record.pk %}" class="tbl_icon delete">Delete</a>
'''
class MyTable(tables.Table):
column_name = tables.TemplateColumn(TEMPLATE)
:
render_FOO
正如您所看到的,from django.utils.safestring import mark_safe
from django.core.urlresolvers import reverse
class MyTable(tables.Table):
column_name = tables.Column()
def render_column_name(self, record):
edit_url = reverse("some_url_edit", args=[record.pk])
del_url = reverse("some_url_del", args=[record.pk])
return mark_safe('''<a href="%s" class="tbl_icon edit">Edit</a>
<a href="%s" class="tbl_icon delete">Delete</a>'''
% (edit_url, del_url))
方法可能更清晰一些
你的情况。
答案 1 :(得分:-1)
对于列定义为tables.Column()
的示例,渲染foo的示例不适用于我。
现在我将TemplateColumn与render_FOO一起使用。
TEMPLATE = "<text></text>"
column_name = tables.TemplateColumn(TEMPLATE)