【问题标题】:Django tables2 external link generation w/ custom parameters带有自定义参数的 Django 表 2 外部链接生成
【发布时间】:2016-08-16 07:19:48
【问题描述】:

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

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

【问题讨论】:

标签: python django django-tables2


【解决方案1】:

我会使用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) 

您可能必须设置empty_values=(),以便在表中实例化AmazonColumn

【讨论】:

  • 谢谢,我想你有一个错字返回 render_html 应该是 format_html。我还将 amazon_url 更改为 amazon_url = 'amazon.com/gp/…{artist}-{title}"">Amazon' 以获得实际链接
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-05
  • 2010-11-23
  • 1970-01-01
  • 2022-01-07
  • 2012-10-05
  • 2018-02-11
  • 1970-01-01
相关资源
最近更新 更多