带自定义参数的 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=()
。
我有一个带有艺术家和歌曲标题字段的音乐相关模型,我想添加一个列,提供 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=()
。