【问题标题】:Example of how to Subclass Column() in Django-tables2如何在 Django-tables2 中对 Column() 进行子类化示例
【发布时间】:2018-12-29 13:04:03
【问题描述】:

谁能告诉我如何在 django-tables2 中子类化基础 Column() 的示例。默认情况下,django-tables2 base Column() attrs 支持 'th'、'td'、'cell' 和 'a',详见documentation,其中还指出这可以是

由子类扩展以允许添加任意 HTML 属性 到输出。

我想要尝试和做的(可能是雄心勃勃或完全愚蠢和错误的)是添加一个“ul”属性(以及随后的“li”属性),以便我可以在单元格中呈现下拉菜单.我的想法是在表格的每一行上都有一个选项按钮,通过 css 或 js 下拉菜单为用户提供“删除”、“复制”、“存档”等各种选项。

【问题讨论】:

    标签: django django-tables2


    【解决方案1】:

    django-tables2 附带了一些自定义列,您可以在这里查看它们的实现:

    https://github.com/jieter/django-tables2/tree/master/django_tables2/columns

    JSONColumn 可能是一个很好的例子:

    class JSONColumn(BaseLinkColumn):
        def __init__(self, json_dumps_kwargs=None, **kwargs):
            self.json_dumps_kwargs = (
                json_dumps_kwargs if json_dumps_kwargs is not None else {"indent": 2}
            )
    
            super(JSONColumn, self).__init__(**kwargs)
    
        def render(self, record, value):
            return format_html(
                "<pre {}>{}</pre>",
                AttributeDict(self.attrs.get("pre", {})).as_html(),
                json.dumps(value, **self.json_dumps_kwargs),
            )
    

    该实现向列构造函数添加了一个参数,允许程序员更改传递给json.dumps() 的参数。在其render() 方法中,它从attrs-dict 中提取&lt;pre&gt;-tag 的属性。这使用户能够做到

    class MyTable(tables.Table):
        data = tables.JSONColumn(attrs={"pre": {"class": "json-data"}})
    

    这将用于像这样呈现列:

    <pre class="json-data">{
        "key": "value"
    }</pre>
    

    另请注意,如果您创建的列不是直接查看数据,you might want to set empty_values=()

    【讨论】:

    • 谢谢杰特。我一直在绕圈子想从哪里开始,但我想我现在明白了一点,所以我会去玩一下,看看我的进展如何。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多