Hi folks. I have worked my way through the association and association proxy examples and almost got what I want going, but I'm stuck on a couple of points.
I have an assoc table with two foreign keys and one extra numerical field. In the example in the docs, the third extra field is a third foreign key to a table instead of an integer, ( in that case it is for Users ) I see how the example grabs the user data by using: mapper(KeywordAssociation, itemkeywords_table, primary_key=[itemkeywords_table.c.article_id, itemkeywords_table.c.keyword_id], properties={ 'keyword' : relation(Keyword, lazy=False), 'user' : relation(User, lazy=False) } ) which can the be accessed directly using the association proxy off of class Article(object): keywords = AssociationProxy('keyword_associations', 'keyword') thus allowing us to use: article.keyword.keyword_name instead of: article.keyword_association.keyword.keyword_name I'm trying to figure out how to do the same thing with an extra property that is not a foreign key. So that I can do article.ordering where ordering is the integer key in the assoc table. Below is my code in case someone has time to look at it. At the moment it works to get article.ordering as a list instead of one field. Is there a way to tell it that this is only supposed to be one item? Thanks Iain page_table = Table('pages', metadata, Column('page_id', Integer, primary_key = True), Column('page_name', String(50)) ) article_table = Table('articles', metadata, Column('article_id', Integer, primary_key = True), Column('article_name', String(150) ), ) page_article_table = Table('page_article', metadata, Column('page_id', Integer, ForeignKey("pages.page_id")), Column('article_id', Integer, ForeignKey("articles.article_id")), Column('ordering', Integer ), ) # class definitions class Page(object): def __init__(self, name): self.page_name = name # create articles proxied association articles = AssociationProxy('article_associations', 'article') class Article(object): def __init__(self, name): self.article_name = name # this works to get the ordering field but gets it as a list instead of one int ordering = AssociationProxy('ordering_association', 'ordering') class PageArticleAssoc(object): pass # Page mapper, relates to articles via Association object mapper(Page, page_table, properties={ 'article_associations':relation(PageArticleAssoc, lazy=False, cascade="all, delete-orphan") } ) # keyword mapper mapper(Article, article_table, properties={ 'pages':relation(PageArticleAssoc, lazy=False, cascade="all, delete-orphan"), } ) # mapper for PageArticleAssoc mapper( PageArticleAssoc, page_article_table, primary_key= [ page_article_table.c.page_id, page_article_table.c.article_id ], properties={ 'article' : relation(Article, lazy=False), 'page' : relation(Page, lazy=False), } ) --~--~---------~--~----~------------~-------~--~----~ 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 [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en -~----------~----~----~----~------~----~------~--~---