【问题标题】:I can't get this foreignkey table value to be displayed in the django template我无法让这个外键表值显示在 django 模板中
【发布时间】:2021-10-24 05:32:21
【问题描述】:

我的模板中无法显示一些 ForeignKey 值。这是问题中涉及的两个模型:

** Models.py **

class Portfolio(models.Model):
    title = models.CharField(max_length= 50, null= True)
    description = models.TextField(max_length= 300, null= True)

class Spotify_Playlist(models.Model):
    portfolio = models.ForeignKey(Portfolio, on_delete= models.CASCADE, null= True)
    title = models.CharField(max_length= 50)
    spotify_url = models.CharField(max_length= 50)
    description = models.TextField(max_length= 100, null= True)
    artist_img = models.ImageField(null= True, upload_to= 'image/')

*** Admin.py ***

@admin.register(Portfolio)
class PortfolioAdmin(admin.ModelAdmin):
    inlines = [
        SpotyListInline,
        SpotySingleInline,
        YoutubeInline,
    ]

class SpotyListInline(admin.TabularInline):
    model = Spotify_Playlist

所以我尝试像这样在我的模板中显示 spotify 播放列表

*** index.html ***

 <section id="portfolio">
                {% for portfolio in portfolios %}
                    <h1>{{ portfolio.title }}</h1>
                    <p>{{ portfolio.description }}</p>
                    {% for playlist in portfolio.Spotify_Playlist_set.all %}
                        <p>{{playlist.title}}</p>
                        <iframe src='https://open.spotify.com/embed/playlist/{{ playlist.spotify_url }}'
                        width="50%" height="380" frameBorder="0" allowtransparency="true" allow="encrypted-media"></iframe>
                    {% endfor %}    
                {% endfor %}
            </section>

但是 {{playlist.title}} 和带有 {{playlist.spotify_url}} 的嵌入式播放器没有显示。 我真的很感激任何帮助

【问题讨论】:

    标签: django django-models model django-templates foreign-keys


    【解决方案1】:

    默认的反向关系名称是小写的。试试:

    {% for playlist in portfolio.spotify_playlist_set.all %}
    

    来自文档https://docs.djangoproject.com/en/dev/topics/db/queries/#following-relationships-backward

    如果模型具有 ForeignKey,则外键模型的实例将有权访问返回第一个模型的所有实例的 Manager。默认情况下,此 Manager 名为 FOO_set,其中 FOO 是源模型名称,小写。此管理器返回 QuerySet,可以按照上面“检索对象”部分的说明进行过滤和操作。

    【讨论】:

    • 就是这样!非常感谢,我几乎是一个初学者,我参加的课程并没有解释你刚刚向我解释的内容。再次感谢:)
    猜你喜欢
    • 2016-09-14
    • 2011-04-27
    • 2017-12-17
    • 2017-06-27
    • 2021-04-21
    • 1970-01-01
    • 1970-01-01
    • 2018-09-24
    • 1970-01-01
    相关资源
    最近更新 更多