django_tables2 Table 不显示元行属性

django_tables2 Table Meta row attributes are not displayed

我在我的项目中使用 django_tables2 库并尝试实现一个 table,其中每一行都将拥有一个 data-item-name 属性。我的特定 table 继承自我的 BaseTable class,后者又继承自 django_tables2.Table class。这是代码:

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)

尽管 table 呈现时没有错误并且没有任何中断,但 table 中没有任何 data-item-name 属性不在一行中,尽管据我所知通过文档,据说在 table 的元 class 中声明此 属性 就足够了。我错了还是我错过了什么?任何帮助将不胜感激。

P.S。我正在使用 Python 2.7、Django 1.8.17 和 django-tables2 v.1.16.0

Django tables 使用(和 Django 一样)metaclasses 分解 table classes 这就是你在调试器中看到这些行的原因仅在启动时被击中,因为这是为您的 table 创建 class 的时候。

另一方面,当您自定义行属性时,django-tables2(按设计)为行中的当前数据命名为 record

您可以阅读 docs:

By default, class names odd and even are supplied to the rows, which can be customized using the row_attrs Table.Meta attribute or as argument to the constructor of Table. String-like values will just be added, callables will be called with optional keyword argument record, the return value will be added. For example.