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

を使用するか、メソッドTemplateColumnを作成するかの 2 つのオプションがあります。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()。今私は render_FOO で TemplateColumn を使用します。

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