我使用django_tables2
库在我的项目,试图实现一个表,其中的每一行会拥有data-item-name
属性。我的具体表由这反过来从BaseTable
类继承我的django_tables2.Table
类继承。下面是代码:
怕个_table.朋友
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
)
巴塞_table.朋友
from django_tables2 import Table
class BaseTable(Table):
def __init__(self, *args, **kwargs):
super(BaseTable, self).__init__(*args, **kwargs)
虽然表呈现没有错误和没有分手,没有data-item-name
属性没有在表中的单个行,但据我已经通过文档了,它说,宣布在表的元类此属性是不够的。是我错了或者是有什么我在这个错过了吗?任何帮助将高度赞赏。
附:我使用Python 2.7,Django的1.8.17和Django的tables2诉1.16.0
Django的表使用(如Django的为好)metaclasses保理这就是你在这样的线路上进行引导,因为正在创建您的表中的类时只有hitten调试器看到的原因表类。
在另一方面Django的tables2(设计)的名称为record
该行的当前数据,当你自定义列属性。
您可以在docs阅读:
默认情况下,类名奇数和偶数被提供给行,这可以使用row_attrs Table.Meta属性或作为参数表的构造进行定制。弦值将只被添加,可调用会带有可选关键字参数记录被调用,返回值将被添加。例如。