django-tables2 - доступ к значениям других столбцов в классе таблицы - PullRequest
3 голосов
/ 04 февраля 2012

Предположим, у меня есть следующий класс таблицы:

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

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

Можно ли получить доступ к значению столбца "id" в методе рендеринга, чтобы я мог создать ссылку, которая ведет к идентификатору, но показывает текст, который зависит от поля "description"?

Заранее спасибо!

Ответы [ 2 ]

7 голосов
/ 04 февраля 2012

С первого взгляда на документы для 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 голос
/ 24 июня 2016

@ 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, для чего-то, что вызывает метод доступа allow_count и возвращает обратную гиперссылку и значение ...

В любом случае работает для Know

...