Извлечение всех песен из базы данных "многие ко многим" в плейлисте

У меня есть структура базы данных для плейлистов и треков.

Код моей базы данных выглядит так:

 #table for tracks
 db.define_table('track',
            Field('artist'),
            Field('album'),
            Field('title'),
            Field('duration', 'float'),
            ......
            )
#table for playlists
db.define_table('playlist',
            Field('title')
            )
#table for references
db.define_table('playlist_reference',
            Field('playlist', 'reference playlist'),
            Field('track','reference track')
            )

Я создал контроллер, который получает все треки в определенном списке воспроизведения, обращаясь к этим таблицам. Вот как выглядит этот код:

def get_playlist_tracks():
    title = request.vars.title
    tracks = []

    q = (title == db.playlist.title)

    #searches the playlist database for the playlist that 
    #matches the title of the playlist whose tracks I want to retrieve
    #and gives me its id
    plist_id = db(q).select().first().id

    #returns all the references in which that playlist appears
    q = (plist_id == db.playlist_reference.playlist)
    refs = db(q).select(db.playlist_reference.ALL)

    #for each reference I get the track id and append to tracks array
    for i, r in enumerate(refs):
        t_id = r.track
        q = (t_id == db.track.id)
        track = db(q).select(db.track.ALL)
        print track
        tracks.append(track)

    return response.json(dict(
        tracks=tracks)
    )

По какой-то причине этот код не возвращает то, что я ожидаю, это список треков из этого плейлиста.

В чем может быть проблема?

Спасибо

0 ответов

Другие вопросы по тегам