I have packages and repos. A package can be in many different repos
and a repo has many packages. I want to have an additional
relationship to capture the 'status' of a particular package in a
particular repo. This would be a many-to-many relationship with an
additional field, so I guess I have to use an Association object, as
described by the docs.

When I create a 'normal' association object, it works fine. However,
as a next step I would like to add any number of comments to the
association object - i.e. in my case (below), I would like a PackRepo
object to have any number of comments - as a classic one-to-many.

However, given that PackRepo itself has no 'id' but rather uses the
foreign key relationships to package.id and repo.id as primary keys, I
don't know how to create the relationship to the package_repo table
when I'm building the comments_table - I can't simply say
packagerepo.id because packagerepo doesn't _have_ an id - it has two
foreign key primary keys as described above.

Any ideas of what to do?

package_table = Table('package',metadata,
  Column('id',Integer,primary_key=True),
  Column('name',String))

repo_table = Table('repo',metadata,
  Column('id',Integer,primary_key=True),
  Column('name',String))

comment_table = Table('comment',metadata,
  Column('id',Integer,primary_key=True),
  ### PROBLEM - HOW TO CREATE RELATIONSHIP TO package_repo ###
  # Column('packagerepo_id', Integer, ForeignKey(### how to declare
this ###)),
  Column('msg',String))

package_repo_table = Table('package_repo', metadata,
 
Column('package_id',Integer,ForeignKey('package.id'),primary_key=True),
  Column('repo_id',Integer,ForeignKey('repo.id'), primary_key=True),
  Column('status',String,default='builds'))

mapper(Package, package_table, properties={
    'repos':relationship(PackRepo)
})

mapper(PackRepo, pack_repo_table, properties={
    'repo':relationship(Repo),
    'comments': relationship(Comment)
})

mapper(Comment,comment_table)

mapper(Repo, repo_table)


-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to sqlalchemy@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.

Reply via email to