我正在尝试为用户保存为播放列表一部分的每个视频显示视频网址。用户也可以保存多个播放列表(视图中的第一行显示所有播放列表)。我正在努力弄清楚如何在每个播放列表中显示视频。有什么建议吗?
def profile(request):
playlist = UserPlaylist.objects.filter(profile=request.user)
return render_to_response('reserve/templates/profiles.html', {'playlist':playlist},
context_instance=RequestContext(request))
class Playlist(models.Model):
playlist = models.CharField('Playlist', max_length = 2000, null=True, blank=True)
def __unicode__(self):
return self.playlist
class Video(models.Model):
video_url = models.URLField('Link to video', max_length = 200, null=True, blank=True)
def __unicode__(self):
return self.video_url
class UserPlaylist(models.Model):
profile = models.ForeignKey(User)
playlist = models.ForeignKey(Playlist)
def __unicode__(self):
return unicode(self.playlist)
class Videoplaylist(models.Model):
video = models.ForeignKey(Video)
playlist = models.ForeignKey(UserPlaylist)
def __unicode__(self):
return unicode(self.playlist)
{% for feed in playlist %}
{{feed}}
<br>
{% endfor %}
答案 0 :(得分:0)
可以使用.
来跨越关系来访问外键关系
{{ feed.playlist.playlist }}
{{ feed.profile.username }}
由于这是UserPlaylist
个对象的查询集,因此它们具有profile
或playlist
属性。
虽然小心!我相信每次访问外国关系时都会进行单独的查询。我不确定但是值得在调试工具栏上查看。
根据Victor'Chris'Cabral的说法,你可以使用向后跨越关系 [model_you_want_to_span]_set.all
您也可以使用
在视图中执行此查找 vpls = Videoplaylist.objects.filter(playlist__profile=request.user)
{% for feed in playlist %}
{{feed}}
{% for vpl in feed.videoplaylist_set.all %}
{{ vpl.video.video_url }}
{% endfor %}
<br>
{% endfor %}