Я использую библиотеку django_tables2
в своем проекте и пытаюсь реализовать таблицу, в которой каждая строка будет иметь атрибут data-item-name
.Моя конкретная таблица наследуется от моего BaseTable
класса, который, в свою очередь, наследуется от django_tables2.Table
класса.Вот код:
page_table.py
import django_tables2 as tables
from django.utils.html import format_html
from myapp.utils.base_table import BaseTable
from myapp.models import MyModel
class PageTable(BaseTable):
item_id = tables.Column(accessor='pk')
# This method works perfectly fine as expected
def render_item_name(self, record):
return format_html(
'<span data-item-id="{0}">{1}</span>'.format(
record.item_id,
record.item_name
)
)
class Meta:
model = MyModel
# When debugging this attribute is accessed only on booting up
# And is ignored when I for example first visit or refresh the page
row_attrs={
'data-item-name': lambda r: r.item_name
}
fields = (
'item_id',
'item_name',
'item_description',
'item_price', # etc
)
base_table.py
from django_tables2 import Table
class BaseTable(Table):
def __init__(self, *args, **kwargs):
super(BaseTable, self).__init__(*args, **kwargs)
Хотя таблицарендерится без ошибок и ничего не разбивается, нет атрибута data-item-name
ни в одной строке таблицы, хотя, поскольку я просматривал документы, говорят, что объявления этого свойства в метаклассе таблицы достаточно.Я ошибаюсь или я что-то упустил в этом?Любая помощь будет принята с благодарностью.
PS Я использую Python 2.7, Django 1.8.17 и django-tables2 v. 1.16.0