On Dec 7, 2010, at 10:09 AM, Alvaro Reinoso wrote: > The relation is OK, one-to-many between Playlist and PlaylisItem. > However, PlaylistItem can contain one Playlist or one Layout and that > Playlist could be in many PlaylistItems. I know it's weird relation if > I already have Playlist as parent of PlaylistItem, but could I get > this?
If you mean, you want PlaylistItem.playlist to be independent of Playlist.items, just use two different foreign keys and two different relationships. Otherwise I don't really have enough detail here to know what you're asking for. > > Thanks! > > On Dec 6, 3:51 pm, Michael Bayer <mike...@zzzcomputing.com> wrote: >> On Dec 6, 2010, at 2:39 PM, Alvaro Reinoso wrote: >> >> >> >>> Hi all, >> >>> I have those two classes: >> >>> class Playlist(rdb.Model): >>> """Represents playlist. It may contain playlist items""" >>> rdb.metadata(metadata) >>> rdb.tablename("playlists") >> >>> id = Column("id", Integer, primary_key=True) >>> title = Column("title", String(50)) >>> pending = Column("pending", Boolean) >> >>> items = relationship("PlaylistItem", cascade="all, delete", >>> backref="playlists") >>> screens = relationship("Screen", secondary=playlist_screens, >>> backref="playlists") >> >>> class PlaylistItem(rdb.Model): >>> """Represents a playlist of items in Schedule page""" >>> rdb.metadata(metadata) >>> rdb.tablename("playlist_items") >> >>> id = Column("id", Integer, primary_key=True) >>> title = Column("title", String(50)) >>> runtime = Column("runtime", Integer) >>> layoutId = Column("layout_id", Integer, ForeignKey("layouts.id")) >>> playlistId = Column("playlist_id", Integer, >>> ForeignKey("playlists.id")) >> >>> layout = relationship("Layout", uselist=False) >>> playlist = relationship("Playlist", uselist=False) >> >>> One playlist can contain many PlaylistItem and PlaylistItem could >>> contain layout or another playlist. The problem is when adding a >>> PlaylistItem to a Playlist, PlaylistItem automatically gets the id of >>> its parent (playlist_id). How can I avoid this? >> >>> Thanks in advance! >> >> the "items" collection of Playlist represents a one-to-many reference to a >> list of PlaylistItems. A PlaylistItem in turn can only be referenced by >> one parent. The items/playlists relationships therefore manage the >> "playlistId" attribute to be the one foreign key represented by this >> ownership. If a PlaylistItem is capable of having multiple Playlist >> parents, this relationship should be changed to a many-to-many. Reference >> on relationship() patterns is >> athttp://www.sqlalchemy.org/docs/orm/relationships.html#basic-relationa.... >> >> >> >>> -- >>> You received this message because you are subscribed to the Google Groups >>> "sqlalchemy" group. >>> To post to this group, send email to sqlalch...@googlegroups.com. >>> To unsubscribe from this group, send email to >>> sqlalchemy+unsubscr...@googlegroups.com. >>> For more options, visit this group >>> athttp://groups.google.com/group/sqlalchemy?hl=en. > > -- > You received this message because you are subscribed to the Google Groups > "sqlalchemy" group. > To post to this group, send email to sqlalch...@googlegroups.com. > To unsubscribe from this group, send email to > sqlalchemy+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/sqlalchemy?hl=en. > -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalch...@googlegroups.com. To unsubscribe from this group, send email to sqlalchemy+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en.