django-tables2 linkcolumn同一单元格中的多个项目

Mis*_*ion 4 django django-tables2

我想使用相同的单元格添加多个"项目" 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 += ...
Run Code Online (Sandbox Code Playgroud)

这甚至可能吗?或者我应该创建自己的表视图,没有django-tables.

谢谢!

bra*_*ers 10

这里有两个选项,可以使用a TemplateColumn,也可以编写render_FOO方法.

下面是一个使用的示例TemplateColumn(正如您所看到的,记录被添加到用于呈现模板的上下文中,因此允许您访问pkvia 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)
Run Code Online (Sandbox Code Playgroud)

示例使用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))
Run Code Online (Sandbox Code Playgroud)

正如您所看到的那样,TemplateColumn在您的情况下,这种方法可能更清晰一些.