2016-08-16 11 views
0

アーティストと曲のタイトルフィールドに関連するモデルがあります。Amazonのデジタル音楽ストアを検索するためのリンクを提供する列を追加したいと思いますTables2を使用してテーブルの所定の行。ここに私が持っているものがありますが、アマゾンの列を追加する方法とアーティストとタイトルのフィールドをAmazonのURLに提供する方法がわかりませんか?Djangoテーブル2外部リンクの生成/カスタムパラメータ

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

文字列の書式設定については[こちらは素晴らしいチュートリアルです](https://pyformat.info/)です。 – Sevanteri

答えて

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) 

あなたがあなたのテーブルにAmazonColumnをインスタンスどこempty_values=()を設定する必要があります。

+0

ありがとう、私はあなたがtyp_返すrender_htmlがformat_htmlでなければならないと思います。私はまたamazon_urlをamazon_url = 'Amazon'に変更して実際のリンクを – bayman

+0

@baymanに修正しました。 – Jieter

関連する問題