2010-08-09 5 views
1

Je ces classes:Pour sélectionner quelques colonnes dans quelques tables liées

class Channel(rdb.Model): 
    rdb.metadata(metadata) 
    rdb.tablename("channels") 

    id = Column("id", Integer, primary_key=True) 
    title = Column("title", String(100)) 


    items = relationship("MediaItem", secondary=channel_items, order_by="MediaItem.titleView", backref="channels") 

class MediaItem(rdb.Model): 
    rdb.metadata(metadata) 
    rdb.tablename("media_items") 

    id = Column("id", Integer, primary_key=True) 
    title = Column("title", String(100)) 

class User(rdb.Model): 
    rdb.metadata(metadata) 
    rdb.tablename("users") 

    id = Column("id", Integer, primary_key=True) 
    name = Column("name", String(50)) 

    channels = relationship("Channel", secondary=user_channels, order_by="Channel.titleView", backref="users") 

MediaItem est liée au canal et le canal est lié à l'utilisateur.

si je voudrais sélectionner des colonnes des objets et des canaux, je ferais ceci:

session = Session() 
result = session.query(Channel).join(Channel.items).values(Channel.title, Item.title) 

Je reçois une instance de classe canal avec ses éléments.

Mon problème est que je ne sais pas comment sélectionner certaines colonnes parmi User, Channel et Item. Comment puis-je faire une requête où, par exemple, je peux sélectionner la propriété User.name et ses canaux avec seulement la propriété Channel.title et les éléments de ces canaux avec seulement la propriété Item.title?

Merci d'avance!

Répondre