我无法让这个外键表值显示在 django 模板中
Posted
技术标签:
【中文标题】我无法让这个外键表值显示在 django 模板中【英文标题】:I can't get this foreignkey table value to be displayed in the django template 【发布时间】: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 '
frameBorder="0" allowtransparency="true" allow="encrypted-media"></iframe>
% endfor %
% endfor %
</section>
但是 playlist.title 和带有 playlist.spotify_url 的嵌入式播放器没有显示。 我真的很感激任何帮助
【问题讨论】:
【参考方案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,可以按照上面“检索对象”部分的说明进行过滤和操作。
【讨论】:
就是这样!非常感谢,我几乎是一个初学者,我参加的课程并没有解释你刚刚向我解释的内容。再次感谢:)以上是关于我无法让这个外键表值显示在 django 模板中的主要内容,如果未能解决你的问题,请参考以下文章