gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 03:20:00 26 4
gpt4 key购买 nike

我在新版本的 django-tables2 中找不到 LinkColumn 的替代品。作者指出 LinkColumn 已弃用,不应使用。但新的 linkify 解决方案的文档记录很少,并且不具备旧版本的所有功能。例如,我有这个专栏:

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

它显示一个指向名为 Edit 的 wagtail 管理编辑页面的链接。使用 linkify 根本无法实现相同的效果,因为 linkify 仅在列上具有有效的accessor 时才有效。但访问器无法为所有行返回相同的静态文本(除非我修改模型以添加虚拟属性 - 但此特定模型位于第 3 方包中,无论如何它都会感觉像管道胶带解决方案)。

在所有其他情况下,列不会显示链接。我研究了源代码,似乎 django-tables2 > 2.0.0 根本不支持这种情况。

是否有任何干净且易于理解的方法来使用linkify构建具有静态链接文本的链接列?

最佳答案

回答我自己的问题。看来用 linkify 功能完全替代 LinkColumn 是不可能的。以下代码解决了我的问题:

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>')

旧的 LinkColumn 的代码更加简洁,我不明白更改的原因,文档确实没有帮助。关于 linkifyrender_col 方法的信息根本不够。

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

关于django - 使用 django-tables2 将列与静态文本链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55075266/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com