django-tables2 linkcolumn несколько элементов в одной ячейке - PullRequest
4 голосов
/ 08 июня 2011

Я бы хотел добавить несколько «предметов» в одну ячейку, используя 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.

Спасибо!

1 Ответ

10 голосов
/ 08 июня 2011

У вас есть два варианта: либо использовать TemplateColumn, либо написать метод render_FOO.

Вот пример использования TemplateColumn (как вы можете видеть, запись добавляется в контекст, который используется для визуализации шаблона, что позволяет вам получить доступ к 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))

Как видите, подход TemplateColumn, вероятно, немного чище в ваш случай.

...