Hi,

I'm using sqlalchemy 0.5 beta 3 and I am trying to have a Call object
that contains two relations to a Contact object.  One is the callee
and the other is the caller.   The code is as follows:

from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Table, Column, Integer, String, MetaData,
ForeignKey
from sqlalchemy.orm import relation, backref, mapper

Base = declarative_base()
metadata = Base.metadata

contact_table = Table('contact', metadata,
        Column('id', Integer, primary_key=True),
        Column('first_name', String(20)),
        Column('last_name', String(30)))

call_table = Table('call', metadata,
        Column('id', Integer, primary_key=True),
        Column('subject', String(255)),
        Column('callee_id', Integer, ForeignKey('contact.id')),
        Column('caller_id', Integer, ForeignKey('contact.id')))

class Contact(object):
        def __init__(self, first_name, last_name):
                self.first_name = first_name
                self.last_name = last_name

        def __repr__(self):
                return self.first_name + ' ' + self.last_name

mapper(Contact, contact_table)

class Call(object):
        def __init__(self, subject, callee, caller):
                self.subject = subject
                self.callee = callee
                self.caller = caller

        def __repr__(self):
                return self.subject

mapper(Call, call_table, properties={
        'callee':relation(Call,
primaryjoin=call_table.c.callee_id==contact_table.c.id,
backref='callee_calls'),
        'caller':relation(Call,
primaryjoin=call_table.c.caller_id==contact_table.c.id,
backref='caller_calls')
        })

c = Contact('my_first_name', 'my_last_name')

I get a long error:
sqlalchemy.exc.ArgumentError: Could not locate any equated, locally
mapped column pairs for primaryjoin condition 'call.caller_id =
contact.id' on relation Call.caller. For more relaxed rules on join
conditions, the relation may be marked as viewonly=True.

Can someone tell me what I'm doing wrong, please?

Thanks,

Rob

--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to