0

ユーザーが再生リストの一部として保存した各動画の動画URLを表示しようとしています。ユーザーは複数のプレイリストを保存することもできます(ビューの最初の行にすべてのプレイリストが表示されます)。しかし、私は各プレイリストのビデオを表示する方法を理解するのに苦労しています。何かアドバイス?

views.py

def profile(request):
    playlist = UserPlaylist.objects.filter(profile=request.user)
    
    return render_to_response('reserve/templates/profiles.html', {'playlist':playlist},
        context_instance=RequestContext(request))

models.py

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)

テンプレート:profiles.html

{% for feed in playlist %}

    {{feed}}
    
    <br>

{% endfor %}
4

1 に答える 1

0

.スパン関係を使用して外部キー関係にアクセスできます

{{ feed.playlist.playlist }}

{{ feed.profile.username }}

これはUserPlaylistオブジェクトのクエリセットであるため、profileまたはplaylistプロパティのいずれかがあります。

ただし、注意してください。私は、あなたが外国の関係にアクセスするたびに、これは別々のクエリを行うと信じています。よくわかりませんが、デバッグツールバーなどで確認する価値があります。

ビクター'クリス'カブラルによると、あなたは使用して後方に関係をまたぐことができます

[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 %}
于 2012-11-12T13:54:29.100 に答える