带自定义参数的 Django tables2 外部 link 生成

Django tables2 external link generation w/ custom parameters

我有一个带有艺术家和歌曲标题字段的音乐相关模型,我想添加一个列,提供 link 以使用给定行中的艺术家和标题搜索亚马逊的数字音乐商店table 使用 Tables2。这是我所拥有的,但不确定如何添加 Amazon 列并向 Amazon URL?

提供 Artist 和 Title 字段

models.py:

class Artist (models.Model):
    name = models.CharField(max_length=100)

class Track (models.Model):    
    artist = models.ForeignKey(Artist, blank=True, null=True, on_delete=models.SET_NULL, verbose_name="Artist")
    title = models.CharField(max_length=100, verbose_name="Title")

tables.py:

class amazonColumn(tables.Column):

    def render(self, value):
        return mark_safe('https://www.amazon.com/gp/search?ie=UTF8&index=digital-music&keywords={{artist}}-{{title}}', value) # not sure how to pass artist and title records


class TrackTable(tables.Table):

    amazon = amazonColumn()

    class Meta:
        model = Track
        attrs = {"class": "paleblue"}
        fields = ('artist', 'title', 'amazon')

我会使用 format_html

此外,您需要添加 record 作为渲染函数的参数,这样您就可以访问它的其他属性:

class AmazonColumn(tables.Column):
    amazon_url = '<a href="https://www.amazon.com/gp/search?ie=UTF8&index=digital-music&keywords={artist}-{title}">Amazon</a>'

    def render(self, record):
        return format_html(self.amazon_url, artist=record.artist.name, title=record.title) 

您可能必须在 table 中实例化 AmazonColumn 的位置设置 empty_values=()