django-tables2 - 访问表类中其他列的值

时间:2012-02-04 12:46:05

标签: django django-tables2

我们假设我有以下表类:

class TestTable(tables.Table):
    id = tables.Column()
    description = tables.Column()

    def render_description(self, value):
        return mark_safe('''<a href=%s>%s</a>''' % (???, value))

是否可以在render方法中访问列“id”的值,以便我可以建立一个导致id的链接,但是显示依赖于'description'-field的文本?

提前致谢!

2 个答案:

答案 0 :(得分:7)

快速浏览一下render_FOO的文档,您可以这样做:

class TestTable(tables.Table):
    id = tables.Column()
    description = tables.Column()

    def render_description(self, value, record):
        return mark_safe('''<a href=%s>%s</a>''' % (record.id, value)

不确定行记录的确切形状,因此它可能是record['id'],文档的链接应该有助于探索......

答案 1 :(得分:1)

@Darb谢谢你,这个选项很完美。但是我想知道是否有任何方法可以使用加速器而不是黑客文本列来输出HTML ...

在我的情况下,我使用

# tables.py
from django.core.urlresolvers import reverse
from django.utils.safestring import mark_safe
#...

class FieldTable(tables.Table):
allows__count = tables.LinkColumn(viewname=None, attrs={'td': {'class': 'leftA'}},
                                  verbose_name='No. of Allowed values')

    def __init__(self, *args, **kwargs):
    super(FieldTable, self).__init__(*args, **kwargs)

    def render_allows__count(self, value, record):
    if value!=0:
        a = reverse(viewname='dict:field_detail',
                       kwargs=
                       {'field_slug': record.slug,
                        'extract_slug': record.extract.slug,
                        'system_slug': record.extract.system.slug})
        return mark_safe('<a href={}>{}</a>'.format(a, value))

但是我想替换mark_safe,用于调用allows__count的访问器并返回反向超链接和值...

无论如何都适合知道