【问题标题】:django-tables2 linkcolumn multiple items in the same celldjango-tables2 linkcolumn 同一单元格中的多个项目
【发布时间】:2011-06-08 06:52:29
【问题描述】:

我想使用 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

谢谢!

【问题讨论】:

    标签: django django-tables2


    【解决方案1】:

    这里有两个选择,要么使用TemplateColumn,要么编写render_FOO 方法。

    这是一个使用TemplateColumn 的示例(您可以看到记录已添加到用于呈现模板的上下文中,从而允许您通过record.pk 访问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 方法在 你的情况。

    【讨论】:

    • 我没有让TemplateColumn 的东西很明显,它只在最底部的 API 参考中有所介绍。
    【解决方案2】:

    渲染 foo 的示例不适用于我,列定义为 tables.Column()。 现在我将 TemplateColumn 与 render_FOO 一起使用。

    TEMPLATE = "<text></text>"
    column_name = tables.TemplateColumn(TEMPLATE)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-30
      • 1970-01-01
      相关资源
      最近更新 更多