5

我想使用 .将多个“项目”添加到同一个单元格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.

谢谢!

4

2 回答 2

11

您在这里有两个选择,要么使用 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)

使用示例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))

如您所见,TemplateColumn在您的情况下,该方法可能更简洁一些。

于 2011-06-08T07:10:09.983 回答
-1

使用 render foo 的示例对我来说不起作用,列定义为tables.Column(). 现在我将 TemplateColumn 与 render_FOO 一起使用。

TEMPLATE = "<text></text>"
column_name = tables.TemplateColumn(TEMPLATE)
于 2019-09-20T05:31:43.553 回答