代码之家  ›  专栏  ›  技术社区  ›  Eugene Morozov

使用django-tables2将列与静态文本链接

  •  0
  • Eugene Morozov  · 技术社区  · 7 年前

    我找不到替代品 LinkColumn 在新版本的 django-tables2 . 作者说 链接列 linkify 解决方案的文档记录很差,没有旧版本的所有功能。例如,我有一个专栏:

        edit = tables.LinkColumn(
            'wagtailadmin_pages:edit', args=[A('page.pk')],
            text='Edit'
        )
    

    Edit . 根本没有办法达到同样的效果 链接 因为 链接 只有当你有有效的 accessor 在柱子上。但是访问器不能为所有行返回相同的静态文本(除非我修改了模型以添加一个虚拟属性-但是这个特定的模型在第三方包中,而且它感觉像是一个管道胶带解决方案)。

    是否有任何清晰易懂的方法使用静态链接文本构造链接列 链接

    0 回复  |  直到 7 年前
        1
  •  2
  •   Eugene Morozov    7 年前

    回答我自己的问题。似乎不可能完全取代 LinkColumn linkify 特色。下面的代码解决了我的问题:

    from django.urls import reverse
    from django.utils.text import mark_safe
    
    import django_tables2 as tables
    
    from wagtail.core.models import PageRevision
    
    
    class WagtailRevisionsTable(tables.Table):
        title = tables.Column(
            accessor='page.title',
            linkify=lambda record: record.page.url,
            verbose_name='Title'
        )
        edit = tables.Column(
            accessor='page.pk'
        )
    
        class Meta:
            model = PageRevision
            fields = ('title', 'created_at', 'user', 'edit')
            template_name = 'django_tables2/bootstrap-responsive.html'
    
        def render_edit(self, value):
            url = reverse('wagtailadmin_pages:edit', args=[value])
            return mark_safe(f'<a href="{url}">Edit</a>')
    

    链接列 简明扼要的多了,我不明白为什么要改变,而纪录片真的没有帮助。只是没有足够的信息 render_col

    所以我希望这个答案能帮助一些可怜的人将旧代码移植到django-tables2>=2.0。

    推荐文章